@kaspernj/api-maker 1.0.2110 → 1.0.2112
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/README.md +21 -0
- package/build/base-model/attribute.d.ts +8 -8
- package/build/base-model/attribute.d.ts.map +1 -1
- package/build/base-model/attribute.js +5 -5
- package/build/base-model/column.d.ts +8 -2
- package/build/base-model/column.d.ts.map +1 -1
- package/build/base-model/column.js +5 -2
- package/build/base-model.js +39 -26
- package/build/bootstrap/attribute-rows.js +2 -3
- package/build/bootstrap/paginate.js +2 -3
- package/build/collection.d.ts +2 -2
- package/build/collection.d.ts.map +1 -1
- package/build/collection.js +7 -7
- package/build/deserializer.d.ts.map +1 -1
- package/build/deserializer.js +8 -3
- package/build/draggable-sort/index.js +2 -3
- package/build/inputs/money.js +2 -3
- package/build/inputs/select.js +2 -3
- package/build/instance-of-class-name.js +2 -2
- package/build/model-recipes-model-loader.d.ts +13 -11
- package/build/model-recipes-model-loader.d.ts.map +1 -1
- package/build/model-recipes-model-loader.js +2 -2
- package/build/source-maps-loader.js +2 -2
- package/build/super-admin/edit-page/edit-attribute.js +2 -2
- package/build/super-admin/edit-page.js +2 -3
- package/build/super-admin/layout/menu/index.js +2 -2
- package/build/table/filters/filter-form.js +2 -2
- package/build/table/settings/download-action.js +2 -2
- package/build/table/table.js +2 -2
- package/build/use-input.js +2 -2
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -39,6 +39,8 @@ const user = await User.find("a0f3842b-1e4c-4e9d-8f2d-cd021e5a9b6a")
|
|
|
39
39
|
|
|
40
40
|
Models are generated from the server recipes and inherit `BaseModel`. Collections let you compose queries fluently and then execute them with `toArray()`.
|
|
41
41
|
|
|
42
|
+
For generated model source shape, prefer `export default class Foo {}` when possible; only use class expressions when explicitly required.
|
|
43
|
+
|
|
42
44
|
```js
|
|
43
45
|
const activeProjects = await Project
|
|
44
46
|
.ransack({state_eq: "active"})
|
|
@@ -96,6 +98,25 @@ The relationship name is stored in `snake_case`, so `preloadRelationship("Accoun
|
|
|
96
98
|
|
|
97
99
|
`config` is a shared singleton. Some helpers (forms, routing, navigation, and money inputs) require config values like `history`, `linkTo`, `navigation`, and `currenciesCollection` to be set. If a required value is missing, the getter throws an error to avoid silent failures.
|
|
98
100
|
|
|
101
|
+
## Realtime model events
|
|
102
|
+
|
|
103
|
+
For model-specific websocket events in React/ShapeComponent UI code, prefer `useModelEvent` over manual `ModelEvents.connect(...)` subscriptions. The hook handles subscription lifecycle automatically and avoids leaked listeners.
|
|
104
|
+
|
|
105
|
+
```js
|
|
106
|
+
import useModelEvent from "@kaspernj/api-maker/build/use-model-event.js"
|
|
107
|
+
|
|
108
|
+
useModelEvent(projectEnvironmentInstance, "termination_job_status", ({args}) => {
|
|
109
|
+
console.log(args)
|
|
110
|
+
})
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Related hooks:
|
|
114
|
+
|
|
115
|
+
- `useUpdatedEvent(model, onUpdated)`
|
|
116
|
+
- `useDestroyedEvent(model, onDestroyed)`
|
|
117
|
+
- `useCreatedEvent(ModelClass, onCreated)`
|
|
118
|
+
- `useModelClassEvent(ModelClass, "custom_event", onEvent)`
|
|
119
|
+
|
|
99
120
|
## ApiMakerTable date formatting
|
|
100
121
|
|
|
101
122
|
`ApiMakerTable` supports date formatting in two ways:
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @typedef AttributeArgType
|
|
3
|
-
* @property {
|
|
3
|
+
* @property {import("./column.js").ColumnArgType | null} column
|
|
4
4
|
* @property {string} name
|
|
5
|
-
* @property {boolean} selected_by_default
|
|
6
|
-
* @property {boolean} translated
|
|
7
|
-
* @property {string} type
|
|
5
|
+
* @property {boolean | null} [selected_by_default]
|
|
6
|
+
* @property {boolean | null} [translated]
|
|
7
|
+
* @property {string | null} [type]
|
|
8
8
|
*/
|
|
9
9
|
export default class ApiMakerBaseModelAttribute {
|
|
10
10
|
/** @param {AttributeArgType} attributeData */
|
|
@@ -23,11 +23,11 @@ export default class ApiMakerBaseModelAttribute {
|
|
|
23
23
|
name(): string;
|
|
24
24
|
}
|
|
25
25
|
export type AttributeArgType = {
|
|
26
|
-
column:
|
|
26
|
+
column: import("./column.js").ColumnArgType | null;
|
|
27
27
|
name: string;
|
|
28
|
-
selected_by_default
|
|
29
|
-
translated
|
|
30
|
-
type
|
|
28
|
+
selected_by_default?: boolean | null;
|
|
29
|
+
translated?: boolean | null;
|
|
30
|
+
type?: string | null;
|
|
31
31
|
};
|
|
32
32
|
import Column from "./column.js";
|
|
33
33
|
//# sourceMappingURL=attribute.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attribute.d.ts","sourceRoot":"/src/","sources":["base-model/attribute.js"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH;IACE,8CAA8C;IAC9C,2BADY,gBAAgB,EAG3B;IADC,gCAAkC;IAGpC,wBAAwB;IACxB,aADc,MAAM,CAWnB;IALK,eAAoC;IAO1C,yBAAyB;IACzB,YADc,OAAO,CACmC;IAExD,yBAAyB;IACzB,uBADc,OAAO,CAOpB;IAED,yBAAyB;IACzB,gBADc,OAAO,CACkC;IAEvD,wBAAwB;IACxB,QADc,MAAM,CACqB;CAC1C;;YA3Ca,
|
|
1
|
+
{"version":3,"file":"attribute.d.ts","sourceRoot":"/src/","sources":["base-model/attribute.js"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH;IACE,8CAA8C;IAC9C,2BADY,gBAAgB,EAG3B;IADC,gCAAkC;IAGpC,wBAAwB;IACxB,aADc,MAAM,CAWnB;IALK,eAAoC;IAO1C,yBAAyB;IACzB,YADc,OAAO,CACmC;IAExD,yBAAyB;IACzB,uBADc,OAAO,CAOpB;IAED,yBAAyB;IACzB,gBADc,OAAO,CACkC;IAEvD,wBAAwB;IACxB,QADc,MAAM,CACqB;CAC1C;;YA3Ca,OAAO,aAAa,EAAE,aAAa,GAAG,IAAI;UAC1C,MAAM;0BACN,OAAO,GAAG,IAAI;iBACd,OAAO,GAAG,IAAI;WACd,MAAM,GAAG,IAAI;;mBARR,aAAa"}
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
import Column from "./column.js";
|
|
3
3
|
/**
|
|
4
4
|
* @typedef AttributeArgType
|
|
5
|
-
* @property {
|
|
5
|
+
* @property {import("./column.js").ColumnArgType | null} column
|
|
6
6
|
* @property {string} name
|
|
7
|
-
* @property {boolean} selected_by_default
|
|
8
|
-
* @property {boolean} translated
|
|
9
|
-
* @property {string} type
|
|
7
|
+
* @property {boolean | null} [selected_by_default]
|
|
8
|
+
* @property {boolean | null} [translated]
|
|
9
|
+
* @property {string | null} [type]
|
|
10
10
|
*/
|
|
11
11
|
export default class ApiMakerBaseModelAttribute {
|
|
12
12
|
/** @param {AttributeArgType} attributeData */
|
|
@@ -37,4 +37,4 @@ export default class ApiMakerBaseModelAttribute {
|
|
|
37
37
|
/** @returns {string} */
|
|
38
38
|
name() { return this.attributeData.name; }
|
|
39
39
|
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJiYXNlLW1vZGVsL2F0dHJpYnV0ZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFBO0FBRWhDOzs7Ozs7O0dBT0c7QUFFSCxNQUFNLENBQUMsT0FBTyxPQUFPLDBCQUEwQjtJQUM3Qyw4Q0FBOEM7SUFDOUMsWUFBWSxhQUFhO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFBO0lBQ3BDLENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsU0FBUztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUE7WUFFNUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBQ3RDLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFBO0lBQ3BCLENBQUM7SUFFRCx5QkFBeUI7SUFDekIsUUFBUSxLQUFLLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRXhELHlCQUF5QjtJQUN6QixtQkFBbUI7UUFDakIsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFBO1FBRWxFLElBQUksbUJBQW1CLElBQUksbUJBQW1CLEtBQUssSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFBO1FBRXBFLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVELHlCQUF5QjtJQUN6QixZQUFZLEtBQUssT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQSxDQUFDLENBQUM7SUFFdkQsd0JBQXdCO0lBQ3hCLElBQUksS0FBSyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFBLENBQUMsQ0FBQztDQUMxQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQ29sdW1uIGZyb20gXCIuL2NvbHVtbi5qc1wiXG5cbi8qKlxuICogQHR5cGVkZWYgQXR0cmlidXRlQXJnVHlwZVxuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuL2NvbHVtbi5qc1wiKS5Db2x1bW5BcmdUeXBlIHwgbnVsbH0gY29sdW1uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gbmFtZVxuICogQHByb3BlcnR5IHtib29sZWFuIHwgbnVsbH0gW3NlbGVjdGVkX2J5X2RlZmF1bHRdXG4gKiBAcHJvcGVydHkge2Jvb2xlYW4gfCBudWxsfSBbdHJhbnNsYXRlZF1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgbnVsbH0gW3R5cGVdXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBpTWFrZXJCYXNlTW9kZWxBdHRyaWJ1dGUge1xuICAvKiogQHBhcmFtIHtBdHRyaWJ1dGVBcmdUeXBlfSBhdHRyaWJ1dGVEYXRhICovXG4gIGNvbnN0cnVjdG9yKGF0dHJpYnV0ZURhdGEpIHtcbiAgICB0aGlzLmF0dHJpYnV0ZURhdGEgPSBhdHRyaWJ1dGVEYXRhXG4gIH1cblxuICAvKiogQHJldHVybnMge0NvbHVtbn0gKi9cbiAgZ2V0Q29sdW1uKCkge1xuICAgIGlmICghdGhpcy5jb2x1bW4pIHtcbiAgICAgIGNvbnN0IGNvbHVtbkRhdGEgPSB0aGlzLmF0dHJpYnV0ZURhdGEuY29sdW1uXG5cbiAgICAgIGlmIChjb2x1bW5EYXRhKSB7XG4gICAgICAgIHRoaXMuY29sdW1uID0gbmV3IENvbHVtbihjb2x1bW5EYXRhKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNvbHVtblxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSAqL1xuICBpc0NvbHVtbigpIHsgcmV0dXJuIEJvb2xlYW4odGhpcy5hdHRyaWJ1dGVEYXRhLmNvbHVtbikgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gKi9cbiAgaXNTZWxlY3RlZEJ5RGVmYXVsdCgpIHtcbiAgICBjb25zdCBpc1NlbGVjdGVkQnlEZWZhdWx0ID0gdGhpcy5hdHRyaWJ1dGVEYXRhLnNlbGVjdGVkX2J5X2RlZmF1bHRcblxuICAgIGlmIChpc1NlbGVjdGVkQnlEZWZhdWx0IHx8IGlzU2VsZWN0ZWRCeURlZmF1bHQgPT09IG51bGwpIHJldHVybiB0cnVlXG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gKi9cbiAgaXNUcmFuc2xhdGVkKCkgeyByZXR1cm4gdGhpcy5hdHRyaWJ1dGVEYXRhLnRyYW5zbGF0ZWQgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSAqL1xuICBuYW1lKCkgeyByZXR1cm4gdGhpcy5hdHRyaWJ1dGVEYXRhLm5hbWUgfVxufVxuIl19
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @typedef {object} ColumnArgType
|
|
3
|
-
* @property {
|
|
3
|
+
* @property {any} [default]
|
|
4
|
+
* @property {string} [name]
|
|
5
|
+
* @property {boolean} [null]
|
|
6
|
+
* @property {string | null} type
|
|
4
7
|
*/
|
|
5
8
|
export default class ApiMakerBaseModelColumn {
|
|
6
9
|
/** @param {ColumnArgType} columnData */
|
|
@@ -10,6 +13,9 @@ export default class ApiMakerBaseModelColumn {
|
|
|
10
13
|
getType(): string;
|
|
11
14
|
}
|
|
12
15
|
export type ColumnArgType = {
|
|
13
|
-
|
|
16
|
+
default?: any;
|
|
17
|
+
name?: string;
|
|
18
|
+
null?: boolean;
|
|
19
|
+
type: string | null;
|
|
14
20
|
};
|
|
15
21
|
//# sourceMappingURL=column.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column.d.ts","sourceRoot":"/src/","sources":["base-model/column.js"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"column.d.ts","sourceRoot":"/src/","sources":["base-model/column.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;IACE,wCAAwC;IACxC,wBADY,aAAa,EAOxB;IADC,0BAA4B;IAI9B,wBAAwB;IACxB,WADc,MAAM,CACqB;CAC1C;;cAnBa,GAAG;WACH,MAAM;WACN,OAAO;UACP,MAAM,GAAG,IAAI"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @typedef {object} ColumnArgType
|
|
3
|
-
* @property {
|
|
3
|
+
* @property {any} [default]
|
|
4
|
+
* @property {string} [name]
|
|
5
|
+
* @property {boolean} [null]
|
|
6
|
+
* @property {string | null} type
|
|
4
7
|
*/
|
|
5
8
|
export default class ApiMakerBaseModelColumn {
|
|
6
9
|
/** @param {ColumnArgType} columnData */
|
|
@@ -13,4 +16,4 @@ export default class ApiMakerBaseModelColumn {
|
|
|
13
16
|
/** @returns {string} */
|
|
14
17
|
getType() { return this.columnData.type; }
|
|
15
18
|
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJiYXNlLW1vZGVsL2NvbHVtbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxNQUFNLENBQUMsT0FBTyxPQUFPLHVCQUF1QjtJQUMxQyx3Q0FBd0M7SUFDeEMsWUFBWSxVQUFVO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUE7UUFDN0MsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO0lBQzlCLENBQUM7SUFHRCx3QkFBd0I7SUFDeEIsT0FBTyxLQUFLLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUEsQ0FBQyxDQUFDO0NBQzFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBDb2x1bW5BcmdUeXBlXG4gKiBAcHJvcGVydHkge2FueX0gW2RlZmF1bHRdXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW25hbWVdXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtudWxsXVxuICogQHByb3BlcnR5IHtzdHJpbmcgfCBudWxsfSB0eXBlXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBpTWFrZXJCYXNlTW9kZWxDb2x1bW4ge1xuICAvKiogQHBhcmFtIHtDb2x1bW5BcmdUeXBlfSBjb2x1bW5EYXRhICovXG4gIGNvbnN0cnVjdG9yKGNvbHVtbkRhdGEpIHtcbiAgICBpZiAoIWNvbHVtbkRhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGNvbHVtbiBkYXRhIHdhcyBnaXZlblwiKVxuICAgIH1cblxuICAgIHRoaXMuY29sdW1uRGF0YSA9IGNvbHVtbkRhdGFcbiAgfVxuXG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmd9ICovXG4gIGdldFR5cGUoKSB7IHJldHVybiB0aGlzLmNvbHVtbkRhdGEudHlwZSB9XG59XG4iXX0=
|