@haustle/notion-orm 0.0.1 → 0.0.21

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":";;;AAEA,SAAgB,OAAO,CAAC,IAGvB;IACG,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,KAAK,CAAC,CAAC;IACvC,IAAI,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAChD,OAAO,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAChC;SAAM,IAAI,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxD,OAAO,eAAe,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACrC;SAAM,IAAI,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QACvD,OAAO,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAChC;SAAM,IAAI,IAAI,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QACpD,OAAO,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;KAClC;SAAM,IAAI,IAAI,KAAK,UAAU,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;QAC1D,OAAO,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3C;SAAM,IAAI,IAAI,KAAK,OAAO,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QACtD,OAAO,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;KACtC;SAAM,IAAI,IAAI,KAAK,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QACrD,OAAO,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;KACpC;AACL,CAAC;AArBD,0BAqBC;AAED;;;;EAIE;AAEF,MAAM,UAAU,GAAG,CAAC,IAAuB,EAAE,EAAE;IAC3C,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACvB,MAAM,MAAM,GAAG;QACX,IAAI,EAAE,KAAK;KACd,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,IAA8B,EAAE,EAAE;IACvD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACvB,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC/D,OAAO,EAAE,YAAY,EAAE,CAAC;AAC5B,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,IAAsB,EAAE,EAAE;IACxC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACtB,MAAM,SAAS,GAAG;QACd;YACI,IAAI,EAAE;gBACF,OAAO,EAAE,IAAI;aAChB;SACJ;KACJ,CAAC;IAEF,OAAO,EAAE,SAAS,EAAE,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,IAAuB,EAAE,EAAE;IAC1C,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACvB,MAAM,WAAW,GAAG;QAChB;YACI,IAAI,EAAE;gBACF,OAAO,EAAE,KAAK;aACjB;SACJ;KACJ,CAAC;IAEF,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AAClC,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,IAAuB,EAAE,EAAE;IAC3C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC/B,OAAO,EAAE,MAAM,EAAE,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,IAAqB,EAAE,EAAE;IACtC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,GAAG,EAAE,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,IAA0B,EAAE,EAAE;IAChD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACnC,OAAO,EAAE,QAAQ,EAAE,CAAC;AACxB,CAAC,CAAC"}
@@ -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;;;;GAwG/B"}
@@ -0,0 +1,245 @@
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 outputFile = printer.printList(ts.ListFormat.MultiLine, nodes, sourceFile);
111
+ // Create our output folder
112
+ const outputDir = path_1.default.join(__dirname, "../../src", "NotionActions", "DatabaseTypes");
113
+ if (!fs_1.default.existsSync(outputDir)) {
114
+ fs_1.default.mkdirSync(outputDir);
115
+ }
116
+ fs_1.default.writeFileSync(path_1.default.resolve(outputDir, `${databaseId}.ts`), outputFile);
117
+ return { databaseName, databaseClassName, databaseId };
118
+ });
119
+ }
120
+ exports.createTypescriptFileForDatabase = createTypescriptFileForDatabase;
121
+ // generate text property
122
+ function createTextProperty(name, isTitle) {
123
+ 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
+ return text;
125
+ }
126
+ /**
127
+ * Generate number property to go inside a type
128
+ * name: number
129
+ */
130
+ function createNumberProperty(name) {
131
+ const number = ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier(name), ts.factory.createToken(ts.SyntaxKind.QuestionToken), ts.factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword));
132
+ return number;
133
+ }
134
+ /**
135
+ *
136
+ * @param name name of property
137
+ * @param options
138
+ * @param array
139
+ * @returns
140
+ *
141
+ * For selects and multi-select collection properties
142
+ *
143
+ * array = true for multi-select
144
+ *
145
+ * name = ("x" | "y" | "z")[]
146
+ */
147
+ function createMultiOptionProp(name, options, array) {
148
+ return ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier(name), ts.factory.createToken(ts.SyntaxKind.QuestionToken), array
149
+ ? ts.factory.createArrayTypeNode(ts.factory.createParenthesizedType(ts.factory.createUnionTypeNode([
150
+ ...options.map((option) => ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral(option))),
151
+ createOtherStringProp(),
152
+ ])))
153
+ : ts.factory.createUnionTypeNode([
154
+ ...options.map((option) => ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral(option))),
155
+ createOtherStringProp(),
156
+ ]));
157
+ }
158
+ // string & {}. Allows users to pass in values
159
+ function createOtherStringProp() {
160
+ return ts.factory.createIntersectionTypeNode([
161
+ ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),
162
+ ts.factory.createTypeLiteralNode([]),
163
+ ]);
164
+ }
165
+ function createDateProperty(name) {
166
+ return ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier("s"), undefined, ts.factory.createTypeReferenceNode(ts.factory.createIdentifier("Date"), undefined));
167
+ }
168
+ // Generate database Id variable
169
+ // const databaseId = <database-id>
170
+ function createDatabaseIdVariable(databaseId) {
171
+ return ts.factory.createVariableStatement(undefined, ts.factory.createVariableDeclarationList([
172
+ ts.factory.createVariableDeclaration(ts.factory.createIdentifier("databaseId"), undefined, undefined, ts.factory.createStringLiteral(databaseId)),
173
+ ], ts.NodeFlags.Const));
174
+ }
175
+ /**
176
+ * Instead of refering to the column names 1:1 such as "Book Rating", we transform them to
177
+ * camelcase (eg. bookRating). So we need to keep track of the original name and the type
178
+ * for when we construct request for API
179
+ *
180
+ * Example
181
+ *
182
+ * const propMap = {
183
+ *
184
+ * "bookRating": {
185
+ * columnName: "Book Rating",
186
+ * type: "select"
187
+ * },
188
+ * "genre": {
189
+ * columnName: "Genre",
190
+ * type: "multi_select"
191
+ * }
192
+ *
193
+ * }
194
+ * @param colMap
195
+ * @returns
196
+ */
197
+ function mapPropNameToColumnDetails(colMap) {
198
+ return ts.factory.createVariableDeclarationList([
199
+ ts.factory.createVariableDeclaration(ts.factory.createIdentifier("propMap"), undefined, undefined, ts.factory.createAsExpression(ts.factory.createObjectLiteralExpression([
200
+ ...Object.entries(colMap).map(([propName, value]) => ts.factory.createPropertyAssignment(ts.factory.createStringLiteral(propName), ts.factory.createObjectLiteralExpression([
201
+ ts.factory.createPropertyAssignment(ts.factory.createIdentifier("columnName"), ts.factory.createStringLiteral(value.columnName)),
202
+ ts.factory.createPropertyAssignment(ts.factory.createIdentifier("type"), ts.factory.createStringLiteral(value.type)),
203
+ ], true))),
204
+ ], true), ts.factory.createTypeReferenceNode(ts.factory.createIdentifier("const"), undefined))),
205
+ ], ts.NodeFlags.Const);
206
+ }
207
+ function ColNameToType() {
208
+ 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
209
+ /* unknown */
210
+ ));
211
+ }
212
+ // Need to import the class responsible for adding and querying the database
213
+ function importCollectionClass() {
214
+ return ts.factory.createImportDeclaration(undefined, ts.factory.createImportClause(false, undefined, ts.factory.createNamedImports([
215
+ ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("CollectionActions")),
216
+ ])), ts.factory.createStringLiteral("../NotionCollection"), undefined);
217
+ }
218
+ // We export the database with the class above.
219
+ // export
220
+ /**
221
+ * We export the database with
222
+ * @param databaseName
223
+ *
224
+ * const <datbase-name> = new CollectionActions<CollectionType>(datbaseId, propMap)
225
+ */
226
+ function exportCollectionActions(databaseName) {
227
+ 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("CollectionActions"), [
229
+ ts.factory.createTypeReferenceNode(ts.factory.createIdentifier("CollectionType"), undefined),
230
+ ts.factory.createTypeReferenceNode(ts.factory.createIdentifier("ColNameToType"), undefined),
231
+ ], [
232
+ ts.factory.createIdentifier("databaseId"),
233
+ ts.factory.createIdentifier("propMap"),
234
+ ])),
235
+ ], ts.NodeFlags.Const));
236
+ }
237
+ // for a type's property name
238
+ function camelize(str) {
239
+ return str.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g, function (match, index) {
240
+ if (+match === 0)
241
+ return ""; // or if (/\s+/.test(match)) for white spaces
242
+ return index === 0 ? match.toLowerCase() : match.toUpperCase();
243
+ });
244
+ }
245
+ //# 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;;EAuDrE,CAAC"}
@@ -0,0 +1,119 @@
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 databaseClassImports = [];
63
+ const databaseCamelizedNames = [];
64
+ for (const database_id of databaseIds) {
65
+ let dbOjbect;
66
+ // Try to get the database schema
67
+ try {
68
+ dbOjbect = yield NotionClient.databases.retrieve({
69
+ database_id,
70
+ });
71
+ }
72
+ catch (e) {
73
+ console.error(e);
74
+ return { databaseNames: [] };
75
+ }
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
+ }
84
+ const nodeArr = [
85
+ ...databaseClassImports,
86
+ mainNotionVariable(databaseCamelizedNames),
87
+ ];
88
+ createNotionFile(nodeArr);
89
+ return { databaseNames };
90
+ });
91
+ exports.createDatabaseTypes = createDatabaseTypes;
92
+ // Create the import statement for notion.ts file
93
+ function databaseImportStatement(dbClass) {
94
+ return ts.factory.createImportDeclaration(undefined, ts.factory.createImportClause(false, undefined, ts.factory.createNamedImports([
95
+ ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier(dbClass.databaseClassName)),
96
+ ])),
97
+ // We've setup paths to allow @notion-database access
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));
106
+ }
107
+ // Creates file that import all generated notion database Ids
108
+ function createNotionFile(nodeArr) {
109
+ const nodes = ts.factory.createNodeArray(nodeArr);
110
+ const sourceFile = ts.createSourceFile("placeholder.ts", "", ts.ScriptTarget.ESNext, true, ts.ScriptKind.TS);
111
+ const printer = ts.createPrinter();
112
+ const outputFile = printer.printList(ts.ListFormat.MultiLine, nodes, sourceFile);
113
+ const outputDir = path_1.default.join(__dirname, "../../src", "NotionActions");
114
+ if (!fs_1.default.existsSync(outputDir)) {
115
+ fs_1.default.mkdirSync(outputDir);
116
+ }
117
+ fs_1.default.writeFileSync(path_1.default.resolve(outputDir, "notion.ts"), outputFile);
118
+ }
119
+ //# 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,7 +1,7 @@
1
1
  {
2
2
  "name": "@haustle/notion-orm",
3
- "version": "0.0.1",
4
- "description": "tool to bring collection types to typescript",
3
+ "version": "0.0.21",
4
+ "description": "tool to bring database types to typescript",
5
5
  "main": "build/index.js",
6
6
  "bin": {
7
7
  "notion": "build/index.js"
@@ -25,6 +25,6 @@
25
25
  "path": "^0.12.7"
26
26
  },
27
27
  "_moduleAliases": {
28
- "@notion-database":"build/NotionActions/DatabaseTypes"
28
+ "@notion-database": "build/NotionActions/DatabaseTypes"
29
29
  }
30
30
  }
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