@balena/pinejs 19.5.5-build-renovate-node-22-x-1b13ca1c2fa98a41b6d5d4c70cd9d42370c20043-1 → 19.6.0-build-experiment-generated-typings-a65b252138a36b01bf3165c9d7e10bcf3a9e745a-1

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.
@@ -1,16 +1,15 @@
1
1
  - commits:
2
- - subject: Update Node.js to v22
3
- hash: 1b13ca1c2fa98a41b6d5d4c70cd9d42370c20043
4
- body: |
5
- Update node from 20.18.0 to 22.11.0
2
+ - subject: Infer async task fn callback arguments typing from schema
3
+ hash: a65b252138a36b01bf3165c9d7e10bcf3a9e745a
4
+ body: ""
6
5
  footer:
7
- Change-type: patch
8
- change-type: patch
9
- author: balena-renovate[bot]
6
+ Change-type: minor
7
+ change-type: minor
8
+ author: Otavio Jacobi
10
9
  nested: []
11
- version: 19.5.5
10
+ version: 19.6.0
12
11
  title: ""
13
- date: 2024-11-12T20:01:34.530Z
12
+ date: 2024-11-20T18:48:13.479Z
14
13
  - commits:
15
14
  - subject: Fix async tasks race condition for selecting task to be executed
16
15
  hash: 97936ec9a2b3f5179a9088b6ae3fac14537ed378
@@ -890,10 +889,8 @@
890
889
  - commits:
891
890
  - subject: Update dependency @balena/abstract-sql-compiler to v9
892
891
  hash: 37684ebb1692f97780dd27056b9cfe299c456b3c
893
- body: >
894
- Update
895
- @balena/abstract-sql-compiler
896
- from 8.5.0 to 9.0.4
892
+ body: |
893
+ Update @balena/abstract-sql-compiler from 8.5.0 to 9.0.4
897
894
  footer:
898
895
  Change-type: patch
899
896
  change-type: patch
@@ -1381,15 +1378,9 @@
1381
1378
  - commits:
1382
1379
  - subject: Update dependencies
1383
1380
  hash: 0a7bd8ff2e506fa3988b6e1851e0098df5da3f86
1384
- body: >
1385
- - Update @balena/lint
1386
- from 6.2.2 to 7.2.4
1387
-
1388
- - Delete
1389
- `require-npm4-to-publish`
1390
- as handled by `engines`
1391
- parameter in
1392
- `package.json`
1381
+ body: |
1382
+ - Update @balena/lint from 6.2.2 to 7.2.4
1383
+ - Delete `require-npm4-to-publish` as handled by `engines` parameter in `package.json`
1393
1384
  footer:
1394
1385
  Change-type: patch
1395
1386
  change-type: patch
@@ -2060,10 +2051,8 @@
2060
2051
  - commits:
2061
2052
  - subject: Improve typings
2062
2053
  hash: 78d4a48022ac0465c5d2c48db53b8ddd08e6e1bf
2063
- body: >
2064
- Update
2065
- @balena/abstract-sql-compiler
2066
- from 8.4.0 to 8.4.1
2054
+ body: |
2055
+ Update @balena/abstract-sql-compiler from 8.4.0 to 8.4.1
2067
2056
  footer:
2068
2057
  Change-type: patch
2069
2058
  change-type: patch
@@ -2087,14 +2076,9 @@
2087
2076
  - commits:
2088
2077
  - subject: Update dependencies
2089
2078
  hash: 5aa3c51cbbfc66cddedebd41dacba5eabbacf709
2090
- body: >
2091
- Update
2092
- @balena/abstract-sql-compiler
2093
- from 8.0.0 to 8.4.0
2094
-
2095
- Update
2096
- @balena/odata-parser
2097
- from 2.4.2 to 2.4.6
2079
+ body: |
2080
+ Update @balena/abstract-sql-compiler from 8.0.0 to 8.4.0
2081
+ Update @balena/odata-parser from 2.4.2 to 2.4.6
2098
2082
  footer:
2099
2083
  Change-type: patch
2100
2084
  change-type: patch
@@ -21343,14 +21327,11 @@
21343
21327
  - commits:
21344
21328
  - subject: Fixing issue reported by tsc 4.8.2
21345
21329
  hash: 57b05baa09718525b4e0e85c99b2c6c8c5b387ae
21346
- body: >
21330
+ body: |
21347
21331
  Inferenced type of check could be I & null
21348
-
21349
21332
  when I is not set in the overload.
21350
21333
 
21351
-
21352
- tsc 4.8
21353
- https://devblogs.microsoft.com/typescript/announcing-typescript-4-8/#unconstrained-generics-no-longer-assignable-to
21334
+ tsc 4.8 https://devblogs.microsoft.com/typescript/announcing-typescript-4-8/#unconstrained-generics-no-longer-assignable-to
21354
21335
  footer:
21355
21336
  Change-type: patch
21356
21337
  change-type: patch
package/CHANGELOG.md CHANGED
@@ -4,10 +4,10 @@ All notable changes to this project will be documented in this file
4
4
  automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY!
5
5
  This project adheres to [Semantic Versioning](http://semver.org/).
6
6
 
7
- # v19.5.5
8
- ## (2024-11-12)
7
+ # v19.6.0
8
+ ## (2024-11-20)
9
9
 
10
- * Update Node.js to v22 [balena-renovate[bot]]
10
+ * Infer async task fn callback arguments typing from schema [Otavio Jacobi]
11
11
 
12
12
  # v19.5.4
13
13
  ## (2024-10-28)
package/Dockerfile CHANGED
@@ -1,4 +1,4 @@
1
- FROM node:22-alpine as runner
1
+ FROM node:20-alpine as runner
2
2
 
3
3
  WORKDIR /usr/src/pine
4
4
 
package/VERSION CHANGED
@@ -1 +1 @@
1
- 19.5.5
1
+ 19.6.0
@@ -4,6 +4,8 @@ import { apiRoot } from './common';
4
4
  import type { TaskHandler } from './worker';
5
5
  import { Worker } from './worker';
6
6
  import type TasksModel from './tasks';
7
+ import type { Task } from './tasks';
8
+ import type { FromSchema } from 'json-schema-to-ts';
7
9
  export type * from './tasks';
8
10
  declare module '../sbvr-api/sbvr-utils' {
9
11
  interface API {
@@ -13,4 +15,5 @@ declare module '../sbvr-api/sbvr-utils' {
13
15
  export declare const config: ConfigLoader.Config;
14
16
  export declare let worker: Worker | null;
15
17
  export declare function setup(): Promise<void>;
16
- export declare function addTaskHandler(name: string, fn: TaskHandler['fn'], schema?: Schema): void;
18
+ export declare function addTaskHandler(name: string, fn: TaskHandler<NonNullable<Task['Read']['is_executed_with__parameter_set']>>['fn'], schema?: undefined): void;
19
+ export declare function addTaskHandler<T extends Schema>(name: string, fn: TaskHandler<FromSchema<NonNullable<T>>>['fn'], schema: T): void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tasks/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tasks/index.ts"],"names":[],"mappings":"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"}
@@ -3,17 +3,17 @@ import type { AnyObject } from 'pinejs-client-core';
3
3
  import { PinejsClient } from '../sbvr-api/sbvr-utils';
4
4
  import type { Task } from './tasks';
5
5
  import type TasksModel from './tasks';
6
- interface TaskArgs {
6
+ interface TaskArgs<T = AnyObject> {
7
7
  api: PinejsClient;
8
- params: AnyObject;
8
+ params: T;
9
9
  }
10
10
  type TaskResponse = Promise<{
11
11
  status: Task['Read']['status'];
12
12
  error?: string;
13
13
  }>;
14
- export interface TaskHandler {
14
+ export interface TaskHandler<T = AnyObject> {
15
15
  name: string;
16
- fn: (options: TaskArgs) => TaskResponse;
16
+ fn: (options: TaskArgs<T>) => TaskResponse;
17
17
  validate?: ValidateFunction;
18
18
  }
19
19
  export declare class Worker {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@balena/pinejs",
3
- "version": "19.5.5-build-renovate-node-22-x-1b13ca1c2fa98a41b6d5d4c70cd9d42370c20043-1",
3
+ "version": "19.6.0-build-experiment-generated-typings-a65b252138a36b01bf3165c9d7e10bcf3a9e745a-1",
4
4
  "main": "out/server-glue/module",
5
5
  "type": "commonjs",
6
6
  "repository": "git@github.com:balena-io/pinejs.git",
@@ -147,6 +147,6 @@
147
147
  "recursive": true
148
148
  },
149
149
  "versionist": {
150
- "publishedAt": "2024-11-12T20:01:35.622Z"
150
+ "publishedAt": "2024-11-20T18:48:14.368Z"
151
151
  }
152
152
  }
@@ -8,6 +8,8 @@ import { ajv, apiRoot } from './common';
8
8
  import type { TaskHandler } from './worker';
9
9
  import { Worker } from './worker';
10
10
  import type TasksModel from './tasks';
11
+ import type { Task } from './tasks';
12
+ import type { FromSchema } from 'json-schema-to-ts';
11
13
 
12
14
  export type * from './tasks';
13
15
 
@@ -127,8 +129,22 @@ export async function setup(): Promise<void> {
127
129
  // Register a task handler
128
130
  export function addTaskHandler(
129
131
  name: string,
130
- fn: TaskHandler['fn'],
131
- schema?: Schema,
132
+ fn: TaskHandler<
133
+ NonNullable<Task['Read']['is_executed_with__parameter_set']>
134
+ >['fn'],
135
+ schema?: undefined,
136
+ ): void;
137
+ export function addTaskHandler<T extends Schema>(
138
+ name: string,
139
+ fn: TaskHandler<FromSchema<NonNullable<T>>>['fn'],
140
+ schema: T,
141
+ ): void;
142
+ export function addTaskHandler<T extends Schema>(
143
+ name: string,
144
+ fn: TaskHandler<
145
+ NonNullable<Task['Read']['is_executed_with__parameter_set']>
146
+ >['fn'],
147
+ schema?: T,
132
148
  ): void {
133
149
  if (worker == null) {
134
150
  throw new Error('Database does not support tasks');
@@ -10,9 +10,9 @@ import { ajv } from './common';
10
10
  import type { Task } from './tasks';
11
11
  import type TasksModel from './tasks';
12
12
 
13
- interface TaskArgs {
13
+ interface TaskArgs<T = AnyObject> {
14
14
  api: PinejsClient;
15
- params: AnyObject;
15
+ params: T;
16
16
  }
17
17
 
18
18
  type TaskResponse = Promise<{
@@ -20,9 +20,9 @@ type TaskResponse = Promise<{
20
20
  error?: string;
21
21
  }>;
22
22
 
23
- export interface TaskHandler {
23
+ export interface TaskHandler<T = AnyObject> {
24
24
  name: string;
25
- fn: (options: TaskArgs) => TaskResponse;
25
+ fn: (options: TaskArgs<T>) => TaskResponse;
26
26
  validate?: ValidateFunction;
27
27
  }
28
28