@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.
Files changed (32) hide show
  1. package/build/src/BuildCall.d.ts +32 -0
  2. package/build/src/BuildCall.d.ts.map +1 -0
  3. package/build/{NotionActions → src}/BuildCall.js +1 -0
  4. package/build/src/BuildCall.js.map +1 -0
  5. package/build/src/DatabaseActions.d.ts +17 -0
  6. package/build/src/DatabaseActions.d.ts.map +1 -0
  7. package/build/{NotionActions/NotionCollection.js → src/DatabaseActions.js} +11 -5
  8. package/build/src/DatabaseActions.js.map +1 -0
  9. package/build/src/GenerateTypes.d.ts +10 -0
  10. package/build/src/GenerateTypes.d.ts.map +1 -0
  11. package/build/{NotionActions → src}/GenerateTypes.js +56 -57
  12. package/build/src/GenerateTypes.js.map +1 -0
  13. package/build/src/NotionConfig.d.ts +9 -0
  14. package/build/src/NotionConfig.d.ts.map +1 -0
  15. package/build/{NotionActions → src}/NotionConfig.js +37 -40
  16. package/build/src/NotionConfig.js.map +1 -0
  17. package/build/src/cli.d.ts +3 -0
  18. package/build/src/cli.d.ts.map +1 -0
  19. package/build/{index.js → src/cli.js} +2 -2
  20. package/build/src/cli.js.map +1 -0
  21. package/build/src/queryTypes.d.ts +102 -0
  22. package/build/src/queryTypes.d.ts.map +1 -0
  23. package/build/{NotionActions → src}/queryTypes.js +1 -0
  24. package/build/src/queryTypes.js.map +1 -0
  25. package/package.json +7 -13
  26. package/src/NotionActions/BuildCall.ts +0 -85
  27. package/src/NotionActions/GenerateTypes.ts +0 -417
  28. package/src/NotionActions/NotionCollection.ts +0 -126
  29. package/src/NotionActions/NotionConfig.ts +0 -150
  30. package/src/NotionActions/queryTypes.ts +0 -141
  31. package/src/index.ts +0 -43
  32. 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"}
@@ -78,3 +78,4 @@ const checkboxCall = (args) => {
78
78
  const { checked: checkbox } = args;
79
79
  return { checkbox };
80
80
  };
81
+ //# sourceMappingURL=BuildCall.js.map
@@ -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.CollectionActions = void 0;
15
+ exports.DatabaseActions = void 0;
13
16
  const client_1 = require("@notionhq/client");
14
17
  const BuildCall_1 = require("./BuildCall");
15
- require("dotenv").config();
16
- class CollectionActions {
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: process.env.NOTION_KEY,
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.CollectionActions = CollectionActions;
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":";;;;;;;;;;;;;;;AAIA,6CAA0C;AAC1C,2CAAsC;AAEtC,gDAAwB;AAiBxB,mCAAmC;AACnC,MAAM,EAAE,IAAI,EAAE,GAAqB,OAAO,CAAC,cAAI,CAAC,IAAI,CACnD,OAAO,CAAC,GAAG,EAAE,EACb,eAAe,CACf,CAAC,CAAC;AAEH,MAAa,eAAe;IAc3B,YACC,SAAiB,EACjB,oBAA8C;QATvC,iBAAY,GAAW,IAAI,eAAM,CAAC;YACzC,IAAI;SACJ,CAAC,CAAC;QASF,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QACjD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACtD,CAAC;IAED,yBAAyB;IACnB,GAAG,CAAC,UAA8B;;YACvC,MAAM,QAAQ,GAAyB;gBACtC,MAAM,EAAE;oBACP,WAAW,EAAE,IAAI,CAAC,UAAU;iBAC5B;gBACD,UAAU,EAAE,EAAE;aACd,CAAC;YAEF,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACpD,mBAAmB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACxC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;gBACjE,MAAM,YAAY,GAAG,IAAA,mBAAO,EAAC;oBAC5B,IAAI;oBACJ,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC;iBAC3B,CAAC,CAAC;gBAEH,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,YAAa,CAAC;YACjD,CAAC,CAAC,CAAC;YAEH,kDAAkD;YAClD,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC;KAAA;IAED,oCAAoC;IAC9B,KAAK,CAAC,KAAwD;;YACnE,MAAM,SAAS,GAA4B;gBAC1C,WAAW,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC;YAEF,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM;gBAC3B,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC3C,CAAC,CAAC,SAAS,CAAC;YACb,IAAI,OAAO,EAAE;gBACZ,wCAAwC;gBACxC,SAAS,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;aAC9B;YAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAEhD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YAExB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACpE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;KAAA;IAEO,sBAAsB,CAC7B,WAAoE;QAEpE,oCAAoC;QACpC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;YAC/B,wDAAwD;YACxD,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,EAAE;gBACpC,MAAM,eAAe;gBAIpB,aAAa;gBACb,WAAW,CAAC,IAAI,CAAC,CAAC;gBAEnB,MAAM,kBAAkB,GAAG,eAAe,CAAC,GAAG,CAC7C,CAAC,CAA0D,EAAE,EAAE;oBAC9D,OAAO,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;gBACvC,CAAC,CACD,CAAC;gBAEF,kDAAkD;gBAClD,IAAI,IAAI,qBACJ,CAAC,IAAI,KAAK,KAAK;oBACjB,CAAC,CAAC,EAAE,GAAG,EAAE,kBAAkB,EAAE;oBAC7B,CAAC,CAAC,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAC9B,CAAC;gBACF,OAAO,IAAI,CAAC;aACZ;iBAAM;gBACN,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;gBACtD,MAAM,IAAI,GAAoB;oBAC7B,QAAQ,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,UAAU;iBACpD,CAAC;gBAEF,YAAY;gBACZ,IAAI,CAAC,QAAQ,CAAC,GAAI,WAAoD,CACrE,IAAI,CACJ,CAAC;gBACF,OAAO,IAAI,CAAC;aACZ;SACD;IACF,CAAC;CACD;AA9GD,0CA8GC"}
@@ -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(camelizedColumnName, columnType === "title"));
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(camelizedColumnName, options,
92
- // This determines whether the property needs to be a union or a union array
93
- columnType === "multi_select"));
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 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(),
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
- 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);
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 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
+ 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
- fs_1.default.writeFileSync(path_1.default.resolve(outputDir, `${databaseId}.ts`), outputFile);
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(name, isTitle) {
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(name, options, array) {
148
- return ts.factory.createPropertySignature(undefined, ts.factory.createIdentifier(name), ts.factory.createToken(ts.SyntaxKind.QuestionToken), array
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("s"), undefined, ts.factory.createTypeReferenceNode(ts.factory.createIdentifier("Date"), undefined));
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 propMap = {
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 mapPropNameToColumnDetails(colMap) {
198
+ function createColumnNameToColumnProperties(colMap) {
198
199
  return ts.factory.createVariableDeclarationList([
199
- ts.factory.createVariableDeclaration(ts.factory.createIdentifier("propMap"), undefined, undefined, ts.factory.createAsExpression(ts.factory.createObjectLiteralExpression([
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 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
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 responsible for adding and querying the database
213
- function importCollectionClass() {
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("CollectionActions")),
216
- ])), ts.factory.createStringLiteral("../NotionCollection"), undefined);
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
- * We export the database with
222
- * @param databaseName
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 exportCollectionActions(databaseName) {
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("CollectionActions"), [
229
- ts.factory.createTypeReferenceNode(ts.factory.createIdentifier("CollectionType"), undefined),
230
- ts.factory.createTypeReferenceNode(ts.factory.createIdentifier("ColNameToType"), undefined),
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("propMap"),
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":"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"}
@@ -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
- require("dotenv").config();
45
- const createDatabaseTypes = (notionInfo) => __awaiter(void 0, void 0, void 0, function* () {
46
- const { auth, databaseIds } = notionInfo;
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
- // retrieve the database object
62
- const databaseClassImports = [];
63
- const databaseCamelizedNames = [];
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
- const nodeArr = [
85
- ...databaseClassImports,
86
- mainNotionVariable(databaseCamelizedNames),
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 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));
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(nodeArr) {
109
- const nodes = ts.factory.createNodeArray(nodeArr);
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 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);
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
- fs_1.default.writeFileSync(path_1.default.resolve(outputDir, "notion.ts"), outputFile);
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,3 @@
1
+ #! /usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -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("./NotionActions/NotionConfig");
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