@snowtop/ent 0.1.0-alpha93 → 0.1.0-alpha94

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/core/ent.js CHANGED
@@ -887,6 +887,7 @@ class EdgeOperation {
887
887
  tableName: params.options.tableName,
888
888
  whereClause: params.clause,
889
889
  fields: params.updateData,
890
+ fieldsToLog: params.updateData,
890
891
  });
891
892
  }
892
893
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@snowtop/ent",
3
- "version": "0.1.0-alpha93",
3
+ "version": "0.1.0-alpha94",
4
4
  "description": "snowtop ent framework",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -10,6 +10,7 @@
10
10
  "dependencies": {
11
11
  "@types/node": "^15.0.2",
12
12
  "camel-case": "^4.1.2",
13
+ "cosmiconfig": "^7.0.1",
13
14
  "dataloader": "^2.0.0",
14
15
  "glob": "^7.1.6",
15
16
  "graph-data-structure": "^1.12.0",
@@ -63,11 +63,22 @@ interface Result {
63
63
  schemas: schemasDict;
64
64
  patterns: patternsDict;
65
65
  globalSchema?: ProcessedGlobalSchema;
66
+ config?: {
67
+ rome?: RomeConfig;
68
+ };
66
69
  }
67
70
  declare type PotentialSchemas = {
68
71
  [key: string]: any;
69
72
  };
70
73
  export declare function parseSchema(potentialSchemas: PotentialSchemas, globalSchema?: GlobalSchema): Promise<Result>;
74
+ interface RomeConfig {
75
+ indentStyle?: string;
76
+ lineWidth?: number;
77
+ indentSize?: number;
78
+ quoteStyle?: string;
79
+ quoteProperties?: string;
80
+ trailingComma?: string;
81
+ }
71
82
  interface ProcessedGlobalSchema {
72
83
  globalEdges: ProcessedAssocEdge[];
73
84
  extraEdgeFields: ProcessedField[];
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseSchema = void 0;
4
+ const cosmiconfig_1 = require("cosmiconfig");
4
5
  async function processFields(src, patternName) {
5
6
  const ret = [];
6
7
  let m = {};
@@ -274,9 +275,55 @@ async function parseSchema(potentialSchemas, globalSchema) {
274
275
  }
275
276
  schemas[key] = processedSchema;
276
277
  }
277
- return { schemas, patterns, globalSchema: parsedGlobalSchema };
278
+ const rome = translatePrettier();
279
+ return {
280
+ schemas,
281
+ patterns,
282
+ globalSchema: parsedGlobalSchema,
283
+ config: {
284
+ rome,
285
+ },
286
+ };
278
287
  }
279
288
  exports.parseSchema = parseSchema;
289
+ function translatePrettier() {
290
+ const r = (0, cosmiconfig_1.cosmiconfigSync)("prettier").search();
291
+ if (!r) {
292
+ return;
293
+ }
294
+ const ret = {};
295
+ if (r.config.printWidth !== undefined) {
296
+ ret.lineWidth = parseInt(r.config.printWidth);
297
+ }
298
+ if (r.config.useTabs) {
299
+ ret.indentStyle = "tab";
300
+ }
301
+ else {
302
+ ret.indentStyle = "space";
303
+ }
304
+ if (r.config.tabWidth !== undefined) {
305
+ ret.indentSize = parseInt(r.config.tabWidth);
306
+ }
307
+ if (r.config.singleQuote) {
308
+ ret.quoteStyle = "single";
309
+ }
310
+ else {
311
+ ret.quoteStyle = "double";
312
+ }
313
+ if (r.config.quoteProps !== undefined) {
314
+ if (r.config.quoteProps === "consistent") {
315
+ // rome doesn't support this
316
+ ret.quoteProperties = "as-needed";
317
+ }
318
+ else {
319
+ ret.quoteProperties = r.config.quoteProps;
320
+ }
321
+ }
322
+ if (r.config.trailingComma !== undefined) {
323
+ ret.trailingComma = r.config.trailingComma;
324
+ }
325
+ return ret;
326
+ }
280
327
  async function parseGlobalSchema(s) {
281
328
  const ret = {
282
329
  globalEdges: [],
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,117 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const transform_1 = require("../tsc/transform");
30
+ const ast_1 = require("../tsc/ast");
31
+ const typescript_1 = __importStar(require("typescript"));
32
+ const path_1 = __importDefault(require("path"));
33
+ class GatherExportsInGeneratedTypes {
34
+ constructor() {
35
+ this.glob = "src/ent/generated/types.ts";
36
+ this.names = [];
37
+ }
38
+ traverseChild(sourceFile, contents, file, node) {
39
+ const exported = node.modifiers?.filter((mod) => mod.getText(sourceFile) === "export");
40
+ if (exported?.length) {
41
+ if (typescript_1.default.isEnumDeclaration(node) ||
42
+ typescript_1.default.isInterfaceDeclaration(node) ||
43
+ typescript_1.default.isTypeAliasDeclaration(node)) {
44
+ this.names.push(node.name.text);
45
+ }
46
+ if (typescript_1.default.isFunctionDeclaration(node) && node.name?.text) {
47
+ this.names.push(node.name.text);
48
+ }
49
+ }
50
+ return { node };
51
+ }
52
+ }
53
+ class TransformImports {
54
+ constructor() {
55
+ this.glob = "src/**/*.ts";
56
+ this.prettierGlob = "src/**/*.ts";
57
+ this.impsToMove = new Map();
58
+ this.cwd = "";
59
+ this.relative = false;
60
+ this.cwd = process.cwd();
61
+ const gt = new GatherExportsInGeneratedTypes();
62
+ (0, transform_1.transform)(gt);
63
+ gt.names.forEach((v) => this.impsToMove.set(v, true));
64
+ this.relative = (0, ast_1.getCustomInfo)().relativeImports ?? this.relative;
65
+ }
66
+ getSrcPath(file, text) {
67
+ if (text.startsWith("src")) {
68
+ return text;
69
+ }
70
+ const dir = path_1.default.dirname(path_1.default.join(this.cwd, file));
71
+ const fullPath = path_1.default.join(dir, text);
72
+ return path_1.default.relative(this.cwd, fullPath);
73
+ }
74
+ traverseChild(sourceFile, contents, file, node) {
75
+ if (!(0, typescript_1.isImportDeclaration)(node)) {
76
+ return { node };
77
+ }
78
+ const impInfo = (0, ast_1.getImportInfo)(node, sourceFile);
79
+ if (!impInfo) {
80
+ return { node };
81
+ }
82
+ const text = node.moduleSpecifier.getText(sourceFile).slice(1, -1);
83
+ const pathToWrite = (0, ast_1.transformRelative)(file, "src/ent/generated/types", this.relative);
84
+ const current = (0, ast_1.transformRelative)(file, text, this.relative);
85
+ const srcPath = this.getSrcPath(file, text);
86
+ // nothing to do here
87
+ if (!srcPath.startsWith("src/ent") || pathToWrite === current) {
88
+ return { node };
89
+ }
90
+ // let's see if we can simplify
91
+ let seenImports = [];
92
+ for (let imp of impInfo.imports) {
93
+ imp = imp.trim();
94
+ if (this.impsToMove.has(imp)) {
95
+ seenImports.push(imp);
96
+ }
97
+ }
98
+ if (!seenImports.length) {
99
+ return { node };
100
+ }
101
+ let imports = new Map([[pathToWrite, seenImports]]);
102
+ return {
103
+ rawString: (0, ast_1.transformImport)(contents, node, sourceFile, {
104
+ removeImports: seenImports,
105
+ transformPath: text,
106
+ }),
107
+ traversed: true,
108
+ imports,
109
+ allowSeenImportsAdded: true,
110
+ };
111
+ }
112
+ }
113
+ // ts-node-script --swc --project ./tsconfig.json -r tsconfig-paths/register ../../ts/src/scripts/move_types.ts
114
+ function main() {
115
+ (0, transform_1.transform)(new TransformImports());
116
+ }
117
+ main();
package/tsc/ast.js CHANGED
@@ -142,6 +142,9 @@ function transformImport(fileContents, importNode, sourceFile, opts) {
142
142
  opts.newImports.forEach((imp) => finalImports.add(imp));
143
143
  }
144
144
  const comment = getPreText(fileContents, importNode, sourceFile);
145
+ if (!finalImports.size) {
146
+ return;
147
+ }
145
148
  return (comment +
146
149
  "import " +
147
150
  // add default
@@ -239,6 +242,9 @@ function normalizePath(p) {
239
242
  if (p.endsWith("..")) {
240
243
  return p + "/";
241
244
  }
245
+ if (!p.startsWith("..")) {
246
+ return "./" + p;
247
+ }
242
248
  return p;
243
249
  }
244
250
  // also used in parse schema logic
@@ -6,6 +6,7 @@ interface TraverseChildResponse {
6
6
  traversed?: boolean;
7
7
  imports?: Map<string, string[]>;
8
8
  removeImports?: string[];
9
+ allowSeenImportsAdded?: boolean;
9
10
  }
10
11
  export interface TransformFile {
11
12
  glob: string;
package/tsc/transform.js CHANGED
@@ -51,6 +51,7 @@ function transform(transform) {
51
51
  let imports = new Map();
52
52
  let removeImports = [];
53
53
  let traversed = false;
54
+ let allowSeenImportsAdded = false;
54
55
  let seenImports = new Map();
55
56
  typescript_1.default.forEachChild(sourceFile, function (node) {
56
57
  if (typescript_1.default.isImportDeclaration(node)) {
@@ -80,6 +81,9 @@ function transform(transform) {
80
81
  if (ret.removeImports?.length) {
81
82
  removeImports.push(...ret.removeImports);
82
83
  }
84
+ if (ret.allowSeenImportsAdded) {
85
+ allowSeenImportsAdded = ret.allowSeenImportsAdded;
86
+ }
83
87
  });
84
88
  if (!traversed) {
85
89
  return;
@@ -91,14 +95,20 @@ function transform(transform) {
91
95
  // do this for the first non-import node we see
92
96
  // we want to add new imports to end of imports and there's an assumption that imports are ordered
93
97
  // at top of file
98
+ // TODO account for placement after first comment
94
99
  if (!afterProcessed) {
95
100
  for (const [imp, list] of imports) {
96
101
  if (seen.has(imp)) {
97
102
  continue;
98
103
  }
99
- const final = list.filter((v) => !seenImports.has(v));
104
+ // this says only add things you haven't seen
105
+ // we want to add something we've seen in this case
106
+ let final = list;
107
+ if (!allowSeenImportsAdded) {
108
+ final = list.filter((v) => !seenImports.has(v));
109
+ }
100
110
  if (final.length) {
101
- newContents += `\nimport { ${final.join(", ")} } from "${imp}"`;
111
+ newContents += `\nimport { ${final.join(", ")} } from "${imp}";\n`;
102
112
  }
103
113
  }
104
114
  afterProcessed = true;