@haustle/notion-orm 0.0.1 → 0.0.3

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,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/NotionActions/BuildCall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,wBAAgB,OAAO,CAAC,IAAI,EAAE;IAC1B,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CACpC;;;;;;;;;;;;;;;;;;;;;;;;;;cAkBA"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCall = void 0;
4
+ function getCall(args) {
5
+ const { type, value } = args;
6
+ console.log(type, value, typeof value);
7
+ if (type === "select" && typeof value === "string") {
8
+ return selectCall({ value });
9
+ }
10
+ else if (type === "multi_select" && Array.isArray(value)) {
11
+ return multiSelectCall({ value });
12
+ }
13
+ else if (type === "number" && typeof value === "number") {
14
+ return numberCall({ value });
15
+ }
16
+ else if (type === "url" && typeof value === "string") {
17
+ return urlCall({ url: value });
18
+ }
19
+ else if (type === "checkbox" && typeof value === "boolean") {
20
+ return checkboxCall({ checked: value });
21
+ }
22
+ else if (type === "title" && typeof value === "string") {
23
+ return titleCall({ title: value });
24
+ }
25
+ else if (type === "text" && typeof value === "string") {
26
+ return textCall({ text: value });
27
+ }
28
+ }
29
+ exports.getCall = getCall;
30
+ /*
31
+ ======================================================
32
+ GENERATE OBJECT BASED ON TYPE
33
+ ======================================================
34
+ */
35
+ const selectCall = (args) => {
36
+ const { value } = args;
37
+ const select = {
38
+ name: value,
39
+ };
40
+ return { select };
41
+ };
42
+ const multiSelectCall = (args) => {
43
+ const { value } = args;
44
+ const multi_select = value.map((option) => ({ name: option }));
45
+ return { multi_select };
46
+ };
47
+ const textCall = (args) => {
48
+ const { text } = args;
49
+ const rich_text = [
50
+ {
51
+ text: {
52
+ content: text,
53
+ },
54
+ },
55
+ ];
56
+ return { rich_text };
57
+ };
58
+ const titleCall = (args) => {
59
+ const { title } = args;
60
+ const titleObject = [
61
+ {
62
+ text: {
63
+ content: title,
64
+ },
65
+ },
66
+ ];
67
+ return { title: titleObject };
68
+ };
69
+ const numberCall = (args) => {
70
+ const { value: number } = args;
71
+ return { number };
72
+ };
73
+ const urlCall = (args) => {
74
+ const { url } = args;
75
+ return { url };
76
+ };
77
+ const checkboxCall = (args) => {
78
+ const { checked: checkbox } = args;
79
+ return { checkbox };
80
+ };
81
+ //# sourceMappingURL=BuildCall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildCall.js","sourceRoot":"","sources":["../../src/NotionActions/BuildCall.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/NotionActions/GenerateTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,mBAAmB,EACnB,MAAM,0CAA0C,CAAC;AAMlD,QAAA,MAAM,WAAW,UAQhB,CAAC;AACF,MAAM,MAAM,YAAY,GAAG,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAUtD,wBAAsB,+BAA+B,CACpD,UAAU,EAAE,mBAAmB;;;;GAqH/B"}
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.createTypescriptFileForDatabase = void 0;
39
+ const ts = __importStar(require("typescript"));
40
+ const fs_1 = __importDefault(require("fs"));
41
+ const path_1 = __importDefault(require("path"));
42
+ // This can be grabbed from // api-endpoints.d.ts with some work
43
+ const propertyArr = [
44
+ "text",
45
+ "select",
46
+ "title",
47
+ "number",
48
+ "multi_select",
49
+ "checkbox",
50
+ "url",
51
+ ];
52
+ /*
53
+ Responsible for generating `.ts` files
54
+ */
55
+ function createTypescriptFileForDatabase(dbResponse) {
56
+ return __awaiter(this, void 0, void 0, function* () {
57
+ const { id: databaseId, properties, title, } = dbResponse;
58
+ const propNameToColumnName = {};
59
+ const databaseName = title[0].plain_text;
60
+ const databaseClassName = camelize(databaseName).replace(/[^a-zA-Z0-9]/g, "");
61
+ const databaseColumnTypeProps = [];
62
+ // Looping through each column of database
63
+ Object.values(properties).forEach((value) => {
64
+ const { type: columnType, name: columnName } = value;
65
+ // Taking the column name and camelizing it for typescript use
66
+ const camelizedColumnName = camelize(columnName);
67
+ // Creating map of column name to the column's name in the database's typescript type
68
+ propNameToColumnName[camelizedColumnName] = {
69
+ columnName,
70
+ type: columnType,
71
+ };
72
+ if (columnType === "title" || columnType === "rich_text") {
73
+ // add text column to collection type
74
+ databaseColumnTypeProps.push(createTextProperty(camelizedColumnName, columnType === "title"));
75
+ }
76
+ else if (columnType === "number") {
77
+ // add number column to collection type
78
+ databaseColumnTypeProps.push(createNumberProperty(camelizedColumnName));
79
+ }
80
+ else if (columnType === "url") {
81
+ // add url column to collection type
82
+ databaseColumnTypeProps.push(createTextProperty(camelizedColumnName, false));
83
+ }
84
+ else if (columnType === "date") {
85
+ // add Date column to collection type
86
+ databaseColumnTypeProps.push(createDateProperty(camelizedColumnName));
87
+ }
88
+ else if (columnType == "select" || columnType == "multi_select") {
89
+ // @ts-ignore
90
+ const options = value[columnType].options.map((x) => x.name);
91
+ databaseColumnTypeProps.push(createMultiOptionProp(camelizedColumnName, options,
92
+ // This determines whether the property needs to be a union or a union array
93
+ columnType === "multi_select"));
94
+ }
95
+ });
96
+ // Object type that represents the database schema
97
+ const CollectionType = ts.factory.createTypeAliasDeclaration([ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)], ts.factory.createIdentifier("CollectionType"), undefined, ts.factory.createTypeLiteralNode(databaseColumnTypeProps));
98
+ // Top level non-nested variable, functions, types
99
+ const nodeArr = [
100
+ importCollectionClass(),
101
+ createDatabaseIdVariable(databaseId),
102
+ CollectionType,
103
+ mapPropNameToColumnDetails(propNameToColumnName),
104
+ ColNameToType(),
105
+ exportCollectionActions(databaseClassName),
106
+ ];
107
+ const nodes = ts.factory.createNodeArray(nodeArr);
108
+ const sourceFile = ts.createSourceFile("placeholder.ts", "", ts.ScriptTarget.ESNext, true, ts.ScriptKind.TS);
109
+ const printer = ts.createPrinter();
110
+ const typescriptCodeToString = printer.printList(ts.ListFormat.MultiLine, nodes, sourceFile);
111
+ const transpileToJavaScript = ts.transpile(typescriptCodeToString, {
112
+ module: ts.ModuleKind.None,
113
+ target: ts.ScriptTarget.ES2015,
114
+ });
115
+ // Create our output folder
116
+ const outputDir = path_1.default.join(__dirname, "../../build", "NotionActions", "DatabaseTypes");
117
+ if (!fs_1.default.existsSync(outputDir)) {
118
+ fs_1.default.mkdirSync(outputDir);
119
+ }
120
+ fs_1.default.writeFileSync(path_1.default.resolve(outputDir, `${databaseId}.ts`), typescriptCodeToString);
121
+ fs_1.default.writeFileSync(path_1.default.resolve(outputDir, `${databaseId}.js`), transpileToJavaScript);
122
+ return { databaseName, databaseClassName, databaseId };
123
+ });
124
+ }
125
+ exports.createTypescriptFileForDatabase = createTypescriptFileForDatabase;
126
+ // generate text property
127
+ function createTextProperty(name, isTitle) {
128
+ const text = ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier(name), !isTitle ? ts.factory.createToken(ts.SyntaxKind.QuestionToken) : undefined, ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword));
129
+ return text;
130
+ }
131
+ /**
132
+ * Generate number property to go inside a type
133
+ * name: number
134
+ */
135
+ function createNumberProperty(name) {
136
+ const number = ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier(name), ts.factory.createToken(ts.SyntaxKind.QuestionToken), ts.factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword));
137
+ return number;
138
+ }
139
+ /**
140
+ *
141
+ * @param name name of property
142
+ * @param options
143
+ * @param array
144
+ * @returns
145
+ *
146
+ * For selects and multi-select collection properties
147
+ *
148
+ * array = true for multi-select
149
+ *
150
+ * name = ("x" | "y" | "z")[]
151
+ */
152
+ function createMultiOptionProp(name, options, array) {
153
+ return ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier(name), ts.factory.createToken(ts.SyntaxKind.QuestionToken), array
154
+ ? ts.factory.createArrayTypeNode(ts.factory.createParenthesizedType(ts.factory.createUnionTypeNode([
155
+ ...options.map((option) => ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral(option))),
156
+ createOtherStringProp(),
157
+ ])))
158
+ : ts.factory.createUnionTypeNode([
159
+ ...options.map((option) => ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral(option))),
160
+ createOtherStringProp(),
161
+ ]));
162
+ }
163
+ // string & {}. Allows users to pass in values
164
+ function createOtherStringProp() {
165
+ return ts.factory.createIntersectionTypeNode([
166
+ ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),
167
+ ts.factory.createTypeLiteralNode([]),
168
+ ]);
169
+ }
170
+ function createDateProperty(name) {
171
+ return ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier("s"), undefined, ts.factory.createTypeReferenceNode(ts.factory.createIdentifier("Date"), undefined));
172
+ }
173
+ // Generate database Id variable
174
+ // const databaseId = <database-id>
175
+ function createDatabaseIdVariable(databaseId) {
176
+ return ts.factory.createVariableStatement(undefined, ts.factory.createVariableDeclarationList([
177
+ ts.factory.createVariableDeclaration(ts.factory.createIdentifier("databaseId"), undefined, undefined, ts.factory.createStringLiteral(databaseId)),
178
+ ], ts.NodeFlags.Const));
179
+ }
180
+ /**
181
+ * Instead of refering to the column names 1:1 such as "Book Rating", we transform them to
182
+ * camelcase (eg. bookRating). So we need to keep track of the original name and the type
183
+ * for when we construct request for API
184
+ *
185
+ * Example
186
+ *
187
+ * const propMap = {
188
+ *
189
+ * "bookRating": {
190
+ * columnName: "Book Rating",
191
+ * type: "select"
192
+ * },
193
+ * "genre": {
194
+ * columnName: "Genre",
195
+ * type: "multi_select"
196
+ * }
197
+ *
198
+ * }
199
+ * @param colMap
200
+ * @returns
201
+ */
202
+ function mapPropNameToColumnDetails(colMap) {
203
+ return ts.factory.createVariableDeclarationList([
204
+ ts.factory.createVariableDeclaration(ts.factory.createIdentifier("propMap"), undefined, undefined, ts.factory.createAsExpression(ts.factory.createObjectLiteralExpression([
205
+ ...Object.entries(colMap).map(([propName, value]) => ts.factory.createPropertyAssignment(ts.factory.createStringLiteral(propName), ts.factory.createObjectLiteralExpression([
206
+ ts.factory.createPropertyAssignment(ts.factory.createIdentifier("columnName"), ts.factory.createStringLiteral(value.columnName)),
207
+ ts.factory.createPropertyAssignment(ts.factory.createIdentifier("type"), ts.factory.createStringLiteral(value.type)),
208
+ ], true))),
209
+ ], true), ts.factory.createTypeReferenceNode(ts.factory.createIdentifier("const"), undefined))),
210
+ ], ts.NodeFlags.Const);
211
+ }
212
+ function ColNameToType() {
213
+ return ts.factory.createTypeAliasDeclaration(undefined, ts.factory.createIdentifier("ColNameToType"), 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("propMap"), undefined)), undefined), undefined, undefined, ts.factory.createIndexedAccessTypeNode(ts.factory.createIndexedAccessTypeNode(ts.factory.createTypeQueryNode(ts.factory.createIdentifier("propMap"), undefined), ts.factory.createTypeReferenceNode(ts.factory.createIdentifier("Property"), undefined)), ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral("type"))), undefined
214
+ /* unknown */
215
+ ));
216
+ }
217
+ // Need to import the class responsible for adding and querying the database
218
+ function importCollectionClass() {
219
+ return ts.factory.createImportDeclaration(undefined, ts.factory.createImportClause(false, undefined, ts.factory.createNamedImports([
220
+ ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("CollectionActions")),
221
+ ])), ts.factory.createStringLiteral("../NotionCollection"), undefined);
222
+ }
223
+ // We export the database with the class above.
224
+ // export
225
+ /**
226
+ * We export the database with
227
+ * @param databaseName
228
+ *
229
+ * const <datbase-name> = new CollectionActions<CollectionType>(datbaseId, propMap)
230
+ */
231
+ function exportCollectionActions(databaseName) {
232
+ return ts.factory.createVariableStatement([ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)], ts.factory.createVariableDeclarationList([
233
+ ts.factory.createVariableDeclaration(ts.factory.createIdentifier(databaseName), undefined, undefined, ts.factory.createNewExpression(ts.factory.createIdentifier("CollectionActions"), [
234
+ ts.factory.createTypeReferenceNode(ts.factory.createIdentifier("CollectionType"), undefined),
235
+ ts.factory.createTypeReferenceNode(ts.factory.createIdentifier("ColNameToType"), undefined),
236
+ ], [
237
+ ts.factory.createIdentifier("databaseId"),
238
+ ts.factory.createIdentifier("propMap"),
239
+ ])),
240
+ ], ts.NodeFlags.Const));
241
+ }
242
+ // for a type's property name
243
+ function camelize(str) {
244
+ return str.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g, function (match, index) {
245
+ if (+match === 0)
246
+ return ""; // or if (/\s+/.test(match)) for white spaces
247
+ return index === 0 ? match.toLowerCase() : match.toUpperCase();
248
+ });
249
+ }
250
+ //# sourceMappingURL=GenerateTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenerateTypes.js","sourceRoot":"","sources":["../../src/NotionActions/GenerateTypes.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 CollectionActions<CollectionType extends Record<string, any>, ColNameToType extends Record<keyof CollectionType, FilterOptionNames>> {
8
+ private NotionClient;
9
+ private databaseId;
10
+ private propNameToColumnName;
11
+ private columnNames;
12
+ constructor(datbaseId: string, propNameToColumnName: propNameToColumnNameType);
13
+ add(pageObject: CollectionType): Promise<void>;
14
+ query(query: Query<CollectionType, ColNameToType>): Promise<void>;
15
+ private recursivelyBuildFilter;
16
+ }
17
+ //# sourceMappingURL=NotionCollection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotionCollection.d.ts","sourceRoot":"","sources":["../../src/NotionActions/NotionCollection.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAIN,iBAAiB,EACjB,KAAK,EAGL,MAAM,cAAc,CAAC;AAGtB,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAC5C,MAAM,EACN;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,YAAY,CAAA;CAAE,CAC1C,CAAC;AAEF,qBAAa,iBAAiB,CAC7B,cAAc,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1C,aAAa,SAAS,MAAM,CAAC,MAAM,cAAc,EAAE,iBAAiB,CAAC;IAErE,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,cAAc;IAwB9B,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,EAAE,aAAa,CAAC;IAqBvD,OAAO,CAAC,sBAAsB;CAoC9B"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CollectionActions = void 0;
13
+ const client_1 = require("@notionhq/client");
14
+ const BuildCall_1 = require("./BuildCall");
15
+ require("dotenv").config();
16
+ class CollectionActions {
17
+ constructor(datbaseId, propNameToColumnName) {
18
+ this.NotionClient = new client_1.Client({
19
+ auth: process.env.NOTION_KEY,
20
+ });
21
+ this.databaseId = datbaseId;
22
+ this.propNameToColumnName = propNameToColumnName;
23
+ this.columnNames = Object.keys(propNameToColumnName);
24
+ }
25
+ // Add page to a database
26
+ add(pageObject) {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ const callBody = {
29
+ parent: {
30
+ database_id: this.databaseId,
31
+ },
32
+ properties: {},
33
+ };
34
+ const columnTypePropNames = Object.keys(pageObject);
35
+ columnTypePropNames.forEach((propName) => {
36
+ const { type, columnName } = this.propNameToColumnName[propName];
37
+ const columnObject = (0, BuildCall_1.getCall)({
38
+ type,
39
+ value: pageObject[propName],
40
+ });
41
+ callBody.properties[columnName] = columnObject;
42
+ });
43
+ // console.log(JSON.stringify(callBody, null, 4));
44
+ yield this.NotionClient.pages.create(callBody);
45
+ });
46
+ }
47
+ // Look for page inside the database
48
+ query(query) {
49
+ return __awaiter(this, void 0, void 0, function* () {
50
+ const queryCall = {
51
+ database_id: this.databaseId,
52
+ };
53
+ const filters = query.filter
54
+ ? this.recursivelyBuildFilter(query.filter)
55
+ : undefined;
56
+ if (filters) {
57
+ // @ts-ignore errors vs notion api types
58
+ queryCall["filter"] = filters;
59
+ }
60
+ console.log(JSON.stringify(queryCall, null, 4));
61
+ const sort = query.sort;
62
+ const apiQuery = yield this.NotionClient.databases.query(queryCall);
63
+ console.log(apiQuery);
64
+ });
65
+ }
66
+ recursivelyBuildFilter(queryFilter) {
67
+ // Need to loop because we don't kno
68
+ for (const prop in queryFilter) {
69
+ // if the filter is "and" || "or" we need to recursively
70
+ if (prop === "and" || prop === "or") {
71
+ const compoundFilters =
72
+ // @ts-ignore
73
+ queryFilter[prop];
74
+ const compoundApiFilters = compoundFilters.map((i) => {
75
+ return this.recursivelyBuildFilter(i);
76
+ });
77
+ // Either have an `and` or an `or` compound filter
78
+ let temp = Object.assign({}, (prop === "and"
79
+ ? { and: compoundApiFilters }
80
+ : { or: compoundApiFilters }));
81
+ return temp;
82
+ }
83
+ else {
84
+ const propType = this.propNameToColumnName[prop].type;
85
+ const temp = {
86
+ property: this.propNameToColumnName[prop].columnName,
87
+ };
88
+ //@ts-ignore
89
+ temp[propType] = queryFilter[prop];
90
+ return temp;
91
+ }
92
+ }
93
+ }
94
+ }
95
+ exports.CollectionActions = CollectionActions;
96
+ //# sourceMappingURL=NotionCollection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotionCollection.js","sourceRoot":"","sources":["../../src/NotionActions/NotionCollection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export type NotionConfigType = {
2
+ auth: string;
3
+ databaseIds: string[];
4
+ };
5
+ export declare const createDatabaseTypes: (notionInfo: NotionConfigType) => Promise<{
6
+ databaseNames: string[];
7
+ }>;
8
+ //# sourceMappingURL=NotionConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotionConfig.d.ts","sourceRoot":"","sources":["../../src/NotionActions/NotionConfig.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAOF,eAAO,MAAM,mBAAmB,eAAsB,gBAAgB;;EA0DrE,CAAC"}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.createDatabaseTypes = void 0;
39
+ const client_1 = require("@notionhq/client");
40
+ const GenerateTypes_1 = require("./GenerateTypes");
41
+ const ts = __importStar(require("typescript"));
42
+ const fs_1 = __importDefault(require("fs"));
43
+ const path_1 = __importDefault(require("path"));
44
+ require("dotenv").config();
45
+ const createDatabaseTypes = (notionInfo) => __awaiter(void 0, void 0, void 0, function* () {
46
+ const { auth, databaseIds } = notionInfo;
47
+ // Making sure the user is passing valid arguments
48
+ if (!auth) {
49
+ console.error("Please pass a valid Notion Integration Key");
50
+ process.exit(1);
51
+ }
52
+ if (databaseIds.length < 0) {
53
+ console.error("Please pass some database Ids");
54
+ process.exit(1);
55
+ }
56
+ // Initialize client
57
+ const NotionClient = new client_1.Client({
58
+ auth: auth,
59
+ });
60
+ const databaseNames = [];
61
+ // retrieve the database object
62
+ const databaseClassExports = [];
63
+ const databaseCamelizedNames = [];
64
+ const buildDir = path_1.default.join(__dirname, "../../build", "NotionActions", "DatabaseTypes");
65
+ fs_1.default.rmdir(buildDir, () => console.log("Deleting current database types..."));
66
+ for (const database_id of databaseIds) {
67
+ let dbOjbect;
68
+ // Try to get the database schema
69
+ try {
70
+ dbOjbect = yield NotionClient.databases.retrieve({
71
+ database_id,
72
+ });
73
+ }
74
+ catch (e) {
75
+ console.error(e);
76
+ return { databaseNames: [] };
77
+ }
78
+ const { databaseClassName, databaseId, databaseName } = yield (0, GenerateTypes_1.createTypescriptFileForDatabase)(dbOjbect);
79
+ databaseNames.push(databaseName);
80
+ databaseCamelizedNames.push(databaseClassName);
81
+ databaseClassExports.push(databaseExportStatement({
82
+ databaseClassName,
83
+ databaseId,
84
+ }));
85
+ }
86
+ const nodeArr = [...databaseClassExports];
87
+ createNotionFile(nodeArr);
88
+ return { databaseNames };
89
+ });
90
+ exports.createDatabaseTypes = createDatabaseTypes;
91
+ // Create the import statement for notion.ts file
92
+ function databaseExportStatement(dbClass) {
93
+ return ts.factory.createExportDeclaration(undefined, false, undefined, ts.factory.createStringLiteral(`./DatabaseTypes/${dbClass.databaseId}`), undefined);
94
+ }
95
+ // Creates file that import all generated notion database Ids
96
+ function createNotionFile(nodeArr) {
97
+ const nodes = ts.factory.createNodeArray(nodeArr);
98
+ const sourceFile = ts.createSourceFile("placeholder.ts", "", ts.ScriptTarget.ESNext, true, ts.ScriptKind.TS);
99
+ const printer = ts.createPrinter();
100
+ const outputFile = printer.printList(ts.ListFormat.MultiLine, nodes, sourceFile);
101
+ const outputDir = path_1.default.join(__dirname, "../../src", "NotionActions");
102
+ if (!fs_1.default.existsSync(outputDir)) {
103
+ fs_1.default.mkdirSync(outputDir);
104
+ }
105
+ fs_1.default.writeFileSync(path_1.default.resolve(outputDir, "notion.ts"), outputFile);
106
+ }
107
+ //# sourceMappingURL=NotionConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotionConfig.js","sourceRoot":"","sources":["../../src/NotionActions/NotionConfig.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Column types' for all query options
3
+ */
4
+ export type FilterOptionNames = "text" | "title" | "number" | "checkbox" | "select" | "multi_select" | "url";
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
+ export type FilterOptions<T = []> = {
42
+ text: TextPropertyFilters;
43
+ title: TextPropertyFilters;
44
+ number: NumberPropertyFilters;
45
+ checkbox: CheckBoxPropertyFilters;
46
+ select: SelectPropertyFilters<T>;
47
+ multi_select: MultiSelectPropertyFilters<T>;
48
+ url: string;
49
+ };
50
+ type ColumnNameToNotionColumnType<T> = Record<keyof T, FilterOptionNames>;
51
+ export type SingleFilter<Y extends Record<string, any>, T extends ColumnNameToNotionColumnType<Y>> = {
52
+ [Property in keyof Y]?: Partial<FilterOptions<Y[Property]>[T[Property]]>;
53
+ };
54
+ export type CompoundFilters<Y extends Record<string, any>, T extends Record<keyof Y, FilterOptionNames>> = {
55
+ and: Array<SingleFilter<Y, T> | CompoundFilters<Y, T>>;
56
+ } | {
57
+ or: Array<SingleFilter<Y, T> | CompoundFilters<Y, T>>;
58
+ };
59
+ export type QueryFilter<Y extends Record<string, any>, T extends Record<keyof Y, FilterOptionNames>> = SingleFilter<Y, T> | CompoundFilters<Y, T>;
60
+ export type Query<Y extends Record<string, any>, T extends Record<keyof Y, FilterOptionNames>> = {
61
+ filter?: QueryFilter<Y, T>;
62
+ sort?: [];
63
+ };
64
+ export type apiFilterQuery = {
65
+ filter?: apiSingleFilter | apiAndFilter | apiOrFilter;
66
+ };
67
+ /**
68
+ * Transform the types above to build types to
69
+ * actually build schema for query request
70
+ */
71
+ type apiColumnTypeToOptions = {
72
+ [prop in keyof FilterOptions]?: Partial<FilterOptions[prop]>;
73
+ };
74
+ export interface apiSingleFilter extends apiColumnTypeToOptions {
75
+ property: string;
76
+ }
77
+ export type apiFilterType = apiSingleFilter | apiAndFilter | apiOrFilter | undefined;
78
+ type apiAndFilter = {
79
+ and: Array<apiFilterType>;
80
+ };
81
+ type apiOrFilter = {
82
+ or: Array<apiFilterType>;
83
+ };
84
+ export {};
85
+ //# sourceMappingURL=queryTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryTypes.d.ts","sourceRoot":"","sources":["../../src/NotionActions/queryTypes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ /**
3
+ * Column types' for all query options
4
+ */
5
+ // import { PageObjectResponse }
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ /**
8
+ * Types to build query object user types out
9
+ */
10
+ const x = {
11
+ character: "multi_select",
12
+ };
13
+ //# sourceMappingURL=queryTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryTypes.js","sourceRoot":"","sources":["../../src/NotionActions/queryTypes.ts"],"names":[],"mappings":";AAAA;;GAEG;AACH,gCAAgC;;AAsEhC;;GAEG;AAEH,MAAM,CAAC,GAAG;IACT,SAAS,EAAE,cAAc;CACzB,CAAC"}
@@ -0,0 +1,3 @@
1
+ #! /usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/build/index.js ADDED
@@ -0,0 +1,50 @@
1
+ #! /usr/bin/env node
2
+ "use strict";
3
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5
+ return new (P || (P = Promise))(function (resolve, reject) {
6
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
8
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
9
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
10
+ });
11
+ };
12
+ var __importDefault = (this && this.__importDefault) || function (mod) {
13
+ return (mod && mod.__esModule) ? mod : { "default": mod };
14
+ };
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ const fs_1 = __importDefault(require("fs"));
17
+ const NotionConfig_1 = require("./NotionActions/NotionConfig");
18
+ const path_1 = __importDefault(require("path"));
19
+ require("dotenv").config();
20
+ function main() {
21
+ return __awaiter(this, void 0, void 0, function* () {
22
+ const args = process.argv.slice(2);
23
+ if (args.length === 1 && args[0] === "generate") {
24
+ const projDir = process.cwd();
25
+ const notionConfigDirJS = fs_1.default.existsSync(path_1.default.join(projDir, "notion.config.js"));
26
+ const notionConfigDirTS = fs_1.default.existsSync(path_1.default.join(projDir, "notion.config.ts"));
27
+ console.log(path_1.default.join(projDir, "notion.config"));
28
+ if (notionConfigDirJS || notionConfigDirTS) {
29
+ // this is a relative import, so we can escape out
30
+ const config = require(path_1.default.join(projDir, "notion.config"));
31
+ const { databaseNames } = yield (0, NotionConfig_1.createDatabaseTypes)(config);
32
+ if (databaseNames.length < 0) {
33
+ console.log("generated no types");
34
+ }
35
+ else {
36
+ console.log("Generated types for the following Database's: ");
37
+ for (let x = 0; x < databaseNames.length; x++) {
38
+ console.log(`${x}. ${databaseNames[x]}`);
39
+ }
40
+ }
41
+ }
42
+ else {
43
+ console.error("Could not find file `notion.config.ts` in root");
44
+ process.exit(1);
45
+ }
46
+ }
47
+ });
48
+ }
49
+ main();
50
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,4CAAoB;AACpB,+DAAmE;AACnE,gDAAwB;AACxB,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;AAE3B,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haustle/notion-orm",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "description": "tool to bring collection types to typescript",
5
5
  "main": "build/index.js",
6
6
  "bin": {
@@ -8,7 +8,7 @@
8
8
  },
9
9
  "scripts": {
10
10
  "start": "npx tsc && node build/index.js",
11
- "build": "tsc -p .",
11
+ "build": "rm -rf build && tsc",
12
12
  "test": "echo \"Error: no test specified\" && exit 1",
13
13
  "refresh": "rm -rf ./node_modules ./package-lock.json && npm install"
14
14
  },
@@ -21,10 +21,6 @@
21
21
  "dependencies": {
22
22
  "@notionhq/client": "^2.2.2",
23
23
  "dotenv": "^16.0.3",
24
- "module-alias": "^2.2.2",
25
24
  "path": "^0.12.7"
26
- },
27
- "_moduleAliases": {
28
- "@notion-database":"build/NotionActions/DatabaseTypes"
29
25
  }
30
26
  }
@@ -112,23 +112,36 @@ export async function createTypescriptFileForDatabase(
112
112
  );
113
113
  const printer = ts.createPrinter();
114
114
 
115
- const outputFile = printer.printList(
115
+ const typescriptCodeToString = printer.printList(
116
116
  ts.ListFormat.MultiLine,
117
117
  nodes,
118
118
  sourceFile
119
119
  );
120
120
 
121
+ const transpileToJavaScript = ts.transpile(typescriptCodeToString, {
122
+ module: ts.ModuleKind.None,
123
+ target: ts.ScriptTarget.ES2015,
124
+ });
125
+
121
126
  // Create our output folder
122
127
  const outputDir = path.join(
123
128
  __dirname,
124
- "../../src",
129
+ "../../build",
125
130
  "NotionActions",
126
131
  "DatabaseTypes"
127
132
  );
128
133
  if (!fs.existsSync(outputDir)) {
129
134
  fs.mkdirSync(outputDir);
130
135
  }
131
- fs.writeFileSync(path.resolve(outputDir, `${databaseId}.ts`), outputFile);
136
+ fs.writeFileSync(
137
+ path.resolve(outputDir, `${databaseId}.ts`),
138
+ typescriptCodeToString
139
+ );
140
+
141
+ fs.writeFileSync(
142
+ path.resolve(outputDir, `${databaseId}.js`),
143
+ transpileToJavaScript
144
+ );
132
145
 
133
146
  return { databaseName, databaseClassName, databaseId };
134
147
  }
@@ -38,9 +38,15 @@ export const createDatabaseTypes = async (notionInfo: NotionConfigType) => {
38
38
  const databaseNames: string[] = [];
39
39
 
40
40
  // retrieve the database object
41
- const databaseClassImports: ts.ImportDeclaration[] = [];
41
+ const databaseClassExports: ts.ExportDeclaration[] = [];
42
42
  const databaseCamelizedNames: string[] = [];
43
-
43
+ const buildDir = path.join(
44
+ __dirname,
45
+ "../../build",
46
+ "NotionActions",
47
+ "DatabaseTypes"
48
+ );
49
+ fs.rmdir(buildDir, () => console.log("Deleting current database types..."));
44
50
  for (const database_id of databaseIds) {
45
51
  let dbOjbect: GetDatabaseResponse;
46
52
 
@@ -58,71 +64,30 @@ export const createDatabaseTypes = async (notionInfo: NotionConfigType) => {
58
64
  databaseNames.push(databaseName);
59
65
  databaseCamelizedNames.push(databaseClassName);
60
66
 
61
- databaseClassImports.push(
62
- databaseImportStatement({
67
+ databaseClassExports.push(
68
+ databaseExportStatement({
63
69
  databaseClassName,
64
70
  databaseId,
65
71
  })
66
72
  );
67
73
  }
68
74
 
69
- const nodeArr = [
70
- ...databaseClassImports,
71
- mainNotionVariable(databaseCamelizedNames),
72
- ];
75
+ const nodeArr = [...databaseClassExports];
73
76
  createNotionFile(nodeArr);
74
77
  return { databaseNames };
75
78
  };
76
79
 
77
80
  // Create the import statement for notion.ts file
78
- function databaseImportStatement(dbClass: importClassType) {
79
- return ts.factory.createImportDeclaration(
81
+ function databaseExportStatement(dbClass: importClassType) {
82
+ return ts.factory.createExportDeclaration(
83
+ undefined,
84
+ false,
80
85
  undefined,
81
- ts.factory.createImportClause(
82
- false,
83
- undefined,
84
- ts.factory.createNamedImports([
85
- ts.factory.createImportSpecifier(
86
- false,
87
- undefined,
88
- ts.factory.createIdentifier(dbClass.databaseClassName)
89
- ),
90
- ])
91
- ),
92
-
93
- // We've setup paths to allow @notion-database access
94
- ts.factory.createStringLiteral(`@notion-database/${dbClass.databaseId}`),
86
+ ts.factory.createStringLiteral(`./DatabaseTypes/${dbClass.databaseId}`),
95
87
  undefined
96
88
  );
97
89
  }
98
90
 
99
- function mainNotionVariable(databaseNames: string[]) {
100
- return ts.factory.createVariableStatement(
101
- [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)],
102
- ts.factory.createVariableDeclarationList(
103
- [
104
- ts.factory.createVariableDeclaration(
105
- ts.factory.createIdentifier("notion"),
106
- undefined,
107
- undefined,
108
- ts.factory.createObjectLiteralExpression(
109
- [
110
- ...databaseNames.map((name) =>
111
- ts.factory.createShorthandPropertyAssignment(
112
- ts.factory.createIdentifier(name),
113
- undefined
114
- )
115
- ),
116
- ],
117
- true
118
- )
119
- ),
120
- ],
121
- ts.NodeFlags.Const
122
- )
123
- );
124
- }
125
-
126
91
  // Creates file that import all generated notion database Ids
127
92
  function createNotionFile(nodeArr: ts.Node[]) {
128
93
  const nodes = ts.factory.createNodeArray(nodeArr);
package/tsconfig.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "compilerOptions": {
3
3
  /* Visit https://aka.ms/tsconfig to read more about this file */
4
- "target": "es2016",
4
+ "target": "ES6",
5
5
  "lib": ["es6"],
6
6
  "module": "commonjs",
7
7
  "rootDir": "src",
@@ -12,11 +12,14 @@
12
12
  "strict": true,
13
13
  "baseUrl": "src",
14
14
  "noImplicitAny": true,
15
+ "declaration": true,
16
+ "declarationMap": true,
17
+ "sourceMap": true,
15
18
  "paths": {
16
19
  "@notion-database/*":["NotionActions/DatabaseTypes/*"]
17
20
  }
18
21
  },
19
- "include": ["src/**/*", "src/NotionActions/DatabaseTypes"]
22
+ "include": ["src"]
20
23
  }
21
24
 
22
25