@tasenor/common-node 1.9.26 → 1.9.28

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,60 @@
1
+ async function up(knex) {
2
+ if (await knex.schema.hasTable('processes')) {
3
+ console.log('Found processes table. Skipping migrations.')
4
+ return
5
+ }
6
+ await knex.schema.createTable('processes', function (table) {
7
+ table.increments('id')
8
+ table.integer('ownerId').default(null)
9
+ table.string('name', 128).notNullable()
10
+ table.jsonb('config').default({})
11
+ table.boolean('complete').notNullable().default(false)
12
+ table.boolean('successful').default(null)
13
+ table.integer('currentStep').default(null)
14
+ table.text('error').default(null)
15
+ table.enum('status', ['INCOMPLETE', 'WAITING', 'SUCCEEDED', 'FAILED', 'CRASHED', 'ROLLEDBACK'], { useNative: true, enumName: 'process_status' }).notNullable().default('INCOMPLETE')
16
+ table.datetime('created').defaultTo(knex.fn.now())
17
+
18
+ table.index(['ownerId', 'created'])
19
+ })
20
+
21
+ await knex.schema.createTable('process_files', function (table) {
22
+ table.increments('id')
23
+ table.integer('processId').notNullable()
24
+ table.foreign('processId').references('processes.id')
25
+ table.text('name')
26
+ table.string('type', 64)
27
+ table.string('encoding', 16)
28
+ table.text('data')
29
+
30
+ table.index(['processId'])
31
+ })
32
+
33
+ await knex.schema.createTable('process_steps', function (table) {
34
+ table.increments('id')
35
+
36
+ table.integer('processId').notNullable()
37
+ table.foreign('processId').references('processes.id')
38
+
39
+ table.integer('number').notNullable()
40
+ table.string('handler', 32).notNullable()
41
+ table.jsonb('directions')
42
+ table.jsonb('action').default(null)
43
+ table.datetime('started').defaultTo(knex.fn.now())
44
+ table.jsonb('state').notNullable()
45
+ table.datetime('finished').default(null)
46
+
47
+ table.unique(['processId', 'number'])
48
+ })
49
+ }
50
+
51
+ async function down(knex) {
52
+ await knex.schema.dropTable('process_files')
53
+ await knex.schema.dropTable('process_steps')
54
+ await knex.schema.dropTable('processes')
55
+ await knex.schema.raw('DROP TYPE process_status')
56
+ }
57
+
58
+ module.exports = {
59
+ up, down
60
+ }
@@ -35,16 +35,16 @@ export class ISPDemoServer {
35
35
  constructor(port, databaseUrl, handlers, connector = null, configDefaults = {}) {
36
36
  this.port = port;
37
37
  this.configDefaults = configDefaults;
38
- let migrationsPath = path.normalize(path.join(__dirname, '/migrations/01_init.js'));
38
+ let migrationsPath = path.normalize(path.join(__dirname, '..', '..', 'migrations', '01_init.js'));
39
+ const migrationsPath0 = migrationsPath;
39
40
  if (!fs.existsSync(migrationsPath)) {
40
- migrationsPath = path.normalize(path.join(__dirname, '../../dist/migrations/01_init.js'));
41
+ migrationsPath = path.normalize(path.join(__dirname, '..', '..', 'dist', 'migrations', '01_init.js'));
41
42
  }
42
43
  if (!fs.existsSync(migrationsPath)) {
43
- migrationsPath = path.normalize(path.join(__dirname, '../../../dist/migrations/01_init.js'));
44
+ migrationsPath = path.normalize(path.join(__dirname, '..', '..', '..', 'dist', 'migrations', '01_init.js'));
44
45
  }
45
46
  if (!fs.existsSync(migrationsPath)) {
46
- console.log(__dirname);
47
- throw new Error(`Cannot find migrations file '${migrationsPath}'.`);
47
+ throw new Error(`Cannot find migrations file '${migrationsPath0}'.`);
48
48
  }
49
49
  this.db = Knex({
50
50
  client: 'pg',
@@ -1 +1 @@
1
- {"version":3,"file":"ISPDemoServer.js","sourceRoot":"","sources":["../../../../src/server/ISPDemoServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ISPDemoServer.js","sourceRoot":"","sources":["../../../../src/server/ISPDemoServer.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import fs from 'fs';
1
2
  import path from 'path';
2
3
  import { CoinbaseHandler } from '../../../tasenor-common-plugins/src/CoinbaseImport/backend/CoinbaseHandler';
3
4
  import { KrakenHandler } from '../../../tasenor-common-plugins/src/KrakenImport/backend/KrakenHandler';
@@ -12,8 +13,7 @@ const handlers = {
12
13
  // Typescript commonly screws up, if there are slight version differencies. Force type.
13
14
  Coinbase: new CoinbaseHandler(),
14
15
  Nordea: new NordeaHandler(),
15
- 'Nordnet-Megalo': new NordnetHandler(),
16
- 'Nordnet-Hilunki': new NordnetHandler(),
16
+ Nordnet: new NordnetHandler(),
17
17
  Lynx: new LynxHandler(),
18
18
  Kraken: new KrakenHandler(),
19
19
  TITO: new TITOHandler(),
@@ -35,18 +35,10 @@ export function getTestHandler(className) {
35
35
  * @returns
36
36
  */
37
37
  export function getTestHandlerPath(className) {
38
- const handlerDirs = {
39
- Coinbase: 'src/CoinbaseImport/backend',
40
- Nordea: 'src/NordeaImport/backend',
41
- 'Nordnet-Megalo': 'src/NordnetImport/backend',
42
- 'Nordnet-Hilunki': 'src/NordnetImport/backend',
43
- Lynx: 'src/LynxImport/backend',
44
- Kraken: 'src/KrakenImport/backend',
45
- TITO: 'src/TITOImport/backend',
46
- };
47
- if (!handlers[className]) {
38
+ const dirName = path.join(__dirname, '..', '..', '..', 'tasenor-common-plugins', 'src', `${className}Import`, 'backend');
39
+ if (!fs.existsSync(dirName)) {
48
40
  throw new Error(`No such import handler path as '${className}'.`);
49
41
  }
50
- return path.join('../../tasenor-common-plugins', handlerDirs[className]);
42
+ return dirName;
51
43
  }
52
44
  //# sourceMappingURL=test-handlers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-handlers.js","sourceRoot":"","sources":["../../../../src/testing/test-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,4EAA4E,CAAA;AAC5G,OAAO,EAAE,aAAa,EAAE,MAAM,wEAAwE,CAAA;AACtG,OAAO,EAAE,WAAW,EAAE,MAAM,oEAAoE,CAAA;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,wEAAwE,CAAA;AACtG,OAAO,EAAE,cAAc,EAAE,MAAM,0EAA0E,CAAA;AACzG,OAAO,EAAE,WAAW,EAAE,MAAM,oEAAoE,CAAA;AAGhG;;GAEG;AACH,MAAM,QAAQ,GAA6C;IACzD,uFAAuF;IACvF,QAAQ,EAAE,IAAI,eAAe,EAAyC;IACtE,MAAM,EAAE,IAAI,aAAa,EAAyC;IAClE,gBAAgB,EAAE,IAAI,cAAc,EAAyC;IAC7E,iBAAiB,EAAE,IAAI,cAAc,EAAyC;IAC9E,IAAI,EAAE,IAAI,WAAW,EAAyC;IAC9D,MAAM,EAAE,IAAI,aAAa,EAAyC;IAClE,IAAI,EAAE,IAAI,WAAW,EAAyC;CAC/D,CAAA;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;QACxB,MAAM,IAAI,KAAK,CAAC,8BAA8B,SAAS,IAAI,CAAC,CAAA;KAC7D;IACD,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAA;AAC5B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,MAAM,WAAW,GAA2B;QAC1C,QAAQ,EAAE,4BAA4B;QACtC,MAAM,EAAE,0BAA0B;QAClC,gBAAgB,EAAE,2BAA2B;QAC7C,iBAAiB,EAAE,2BAA2B;QAC9C,IAAI,EAAE,wBAAwB;QAC9B,MAAM,EAAE,0BAA0B;QAClC,IAAI,EAAE,wBAAwB;KAC/B,CAAA;IACD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;QACxB,MAAM,IAAI,KAAK,CAAC,mCAAmC,SAAS,IAAI,CAAC,CAAA;KAClE;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,8BAA8B,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,CAAA;AAC1E,CAAC"}
1
+ {"version":3,"file":"test-handlers.js","sourceRoot":"","sources":["../../../../src/testing/test-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,4EAA4E,CAAA;AAC5G,OAAO,EAAE,aAAa,EAAE,MAAM,wEAAwE,CAAA;AACtG,OAAO,EAAE,WAAW,EAAE,MAAM,oEAAoE,CAAA;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,wEAAwE,CAAA;AACtG,OAAO,EAAE,cAAc,EAAE,MAAM,0EAA0E,CAAA;AACzG,OAAO,EAAE,WAAW,EAAE,MAAM,oEAAoE,CAAA;AAGhG;;GAEG;AACH,MAAM,QAAQ,GAA6C;IACzD,uFAAuF;IACvF,QAAQ,EAAE,IAAI,eAAe,EAAyC;IACtE,MAAM,EAAE,IAAI,aAAa,EAAyC;IAClE,OAAO,EAAE,IAAI,cAAc,EAAyC;IACpE,IAAI,EAAE,IAAI,WAAW,EAAyC;IAC9D,MAAM,EAAE,IAAI,aAAa,EAAyC;IAClE,IAAI,EAAE,IAAI,WAAW,EAAyC;CAC/D,CAAA;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;QACxB,MAAM,IAAI,KAAK,CAAC,8BAA8B,SAAS,IAAI,CAAC,CAAA;KAC7D;IACD,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAA;AAC5B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,GAAG,SAAS,QAAQ,EAAE,SAAS,CAAC,CAAA;IACxH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,IAAI,KAAK,CAAC,mCAAmC,SAAS,IAAI,CAAC,CAAA;KAClE;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -0,0 +1,60 @@
1
+ async function up(knex) {
2
+ if (await knex.schema.hasTable('processes')) {
3
+ console.log('Found processes table. Skipping migrations.')
4
+ return
5
+ }
6
+ await knex.schema.createTable('processes', function (table) {
7
+ table.increments('id')
8
+ table.integer('ownerId').default(null)
9
+ table.string('name', 128).notNullable()
10
+ table.jsonb('config').default({})
11
+ table.boolean('complete').notNullable().default(false)
12
+ table.boolean('successful').default(null)
13
+ table.integer('currentStep').default(null)
14
+ table.text('error').default(null)
15
+ table.enum('status', ['INCOMPLETE', 'WAITING', 'SUCCEEDED', 'FAILED', 'CRASHED', 'ROLLEDBACK'], { useNative: true, enumName: 'process_status' }).notNullable().default('INCOMPLETE')
16
+ table.datetime('created').defaultTo(knex.fn.now())
17
+
18
+ table.index(['ownerId', 'created'])
19
+ })
20
+
21
+ await knex.schema.createTable('process_files', function (table) {
22
+ table.increments('id')
23
+ table.integer('processId').notNullable()
24
+ table.foreign('processId').references('processes.id')
25
+ table.text('name')
26
+ table.string('type', 64)
27
+ table.string('encoding', 16)
28
+ table.text('data')
29
+
30
+ table.index(['processId'])
31
+ })
32
+
33
+ await knex.schema.createTable('process_steps', function (table) {
34
+ table.increments('id')
35
+
36
+ table.integer('processId').notNullable()
37
+ table.foreign('processId').references('processes.id')
38
+
39
+ table.integer('number').notNullable()
40
+ table.string('handler', 32).notNullable()
41
+ table.jsonb('directions')
42
+ table.jsonb('action').default(null)
43
+ table.datetime('started').defaultTo(knex.fn.now())
44
+ table.jsonb('state').notNullable()
45
+ table.datetime('finished').default(null)
46
+
47
+ table.unique(['processId', 'number'])
48
+ })
49
+ }
50
+
51
+ async function down(knex) {
52
+ await knex.schema.dropTable('process_files')
53
+ await knex.schema.dropTable('process_steps')
54
+ await knex.schema.dropTable('processes')
55
+ await knex.schema.raw('DROP TYPE process_status')
56
+ }
57
+
58
+ module.exports = {
59
+ up, down
60
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tasenor/common-node",
3
- "version": "1.9.26",
3
+ "version": "1.9.28",
4
4
  "description": "Common Node-parts of Tasenor project",
5
5
  "main": "src/index.ts",
6
6
  "types": "src/index.ts",
@@ -36,7 +36,7 @@
36
36
  "sqlite3": "^5.1.6",
37
37
  "tar": "^6.1.15",
38
38
  "ts-opaque": "^3.0.1",
39
- "@tasenor/common": "1.9.26"
39
+ "@tasenor/common": "1.9.28"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@jest/globals": "^29.6.1",
@@ -46,13 +46,12 @@
46
46
  "ts-jest": "^29.1.1",
47
47
  "typescript": "^5.1.6",
48
48
  "eslint-config-tasenor": "0.0.0",
49
- "jestconfig": "0.0.0",
50
- "@tasenor/testing": "1.9.26",
51
- "tsconfig": "0.0.0"
49
+ "tsconfig": "0.0.0",
50
+ "jestconfig": "0.0.0"
52
51
  },
53
52
  "scripts": {
54
53
  "ci": "pnpm run lint && pnpm run build && pnpm run test",
55
- "build": "rm -rf dist && tsc",
54
+ "build": "rm -rf dist && tsc && cp -r migrations dist/",
56
55
  "fix": "eslint --fix 'src/**/*.ts' 'tests/**/*.ts'",
57
56
  "lint": "eslint 'src/**/*.ts' 'tests/**/*.ts'",
58
57
  "prepublish": "pnpm version patch",
@@ -40,16 +40,16 @@ export class ISPDemoServer {
40
40
  constructor(port: number, databaseUrl: string, handlers: ProcessHandler[], connector: ProcessConnector|null = null, configDefaults: Record<string, unknown> = {}) {
41
41
  this.port = port
42
42
  this.configDefaults = configDefaults
43
- let migrationsPath = path.normalize(path.join(__dirname, '/migrations/01_init.js'))
43
+ let migrationsPath = path.normalize(path.join(__dirname, '..', '..', 'migrations', '01_init.js'))
44
+ const migrationsPath0 = migrationsPath
44
45
  if (!fs.existsSync(migrationsPath)) {
45
- migrationsPath = path.normalize(path.join(__dirname, '../../dist/migrations/01_init.js'))
46
+ migrationsPath = path.normalize(path.join(__dirname, '..', '..', 'dist', 'migrations', '01_init.js'))
46
47
  }
47
48
  if (!fs.existsSync(migrationsPath)) {
48
- migrationsPath = path.normalize(path.join(__dirname, '../../../dist/migrations/01_init.js'))
49
+ migrationsPath = path.normalize(path.join(__dirname, '..', '..', '..', 'dist', 'migrations', '01_init.js'))
49
50
  }
50
51
  if (!fs.existsSync(migrationsPath)) {
51
- console.log(__dirname)
52
- throw new Error(`Cannot find migrations file '${migrationsPath}'.`)
52
+ throw new Error(`Cannot find migrations file '${migrationsPath0}'.`)
53
53
  }
54
54
  this.db = Knex({
55
55
  client: 'pg',
@@ -1,3 +1,4 @@
1
+ import fs from 'fs'
1
2
  import path from 'path'
2
3
  import { CoinbaseHandler } from '../../../tasenor-common-plugins/src/CoinbaseImport/backend/CoinbaseHandler'
3
4
  import { KrakenHandler } from '../../../tasenor-common-plugins/src/KrakenImport/backend/KrakenHandler'
@@ -14,8 +15,7 @@ const handlers: Record<string, TransactionImportHandler> = {
14
15
  // Typescript commonly screws up, if there are slight version differencies. Force type.
15
16
  Coinbase: new CoinbaseHandler() as unknown as TransactionImportHandler,
16
17
  Nordea: new NordeaHandler() as unknown as TransactionImportHandler,
17
- 'Nordnet-Megalo': new NordnetHandler() as unknown as TransactionImportHandler,
18
- 'Nordnet-Hilunki': new NordnetHandler() as unknown as TransactionImportHandler,
18
+ Nordnet: new NordnetHandler() as unknown as TransactionImportHandler,
19
19
  Lynx: new LynxHandler() as unknown as TransactionImportHandler,
20
20
  Kraken: new KrakenHandler() as unknown as TransactionImportHandler,
21
21
  TITO: new TITOHandler() as unknown as TransactionImportHandler,
@@ -39,17 +39,9 @@ export function getTestHandler(className: string): TransactionImportHandler {
39
39
  * @returns
40
40
  */
41
41
  export function getTestHandlerPath(className: string): string {
42
- const handlerDirs: Record<string, string> = {
43
- Coinbase: 'src/CoinbaseImport/backend',
44
- Nordea: 'src/NordeaImport/backend',
45
- 'Nordnet-Megalo': 'src/NordnetImport/backend',
46
- 'Nordnet-Hilunki': 'src/NordnetImport/backend',
47
- Lynx: 'src/LynxImport/backend',
48
- Kraken: 'src/KrakenImport/backend',
49
- TITO: 'src/TITOImport/backend',
50
- }
51
- if (!handlers[className]) {
42
+ const dirName = path.join(__dirname, '..', '..', '..', 'tasenor-common-plugins', 'src', `${className}Import`, 'backend')
43
+ if (!fs.existsSync(dirName)) {
52
44
  throw new Error(`No such import handler path as '${className}'.`)
53
45
  }
54
- return path.join('../../tasenor-common-plugins', handlerDirs[className])
46
+ return dirName
55
47
  }