@dismissible/nestjs-item 1.0.3-alpha.064e57a.0

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 ADDED
@@ -0,0 +1,131 @@
1
+ <p align="center">
2
+ <a href="https://dismissible.io" target="_blank"><img src="../../docs/images/dismissible_logo.png" width="120" alt="Dismissible" /></a>
3
+ </p>
4
+
5
+ <p align="center">Never Show The Same Thing Twice!</p>
6
+ <p align="center">
7
+ <a href="https://www.npmjs.com/package/@dismissible/nestjs-item" target="_blank"><img src="https://img.shields.io/npm/v/@dismissible/nestjs-item.svg" alt="NPM Version" /></a>
8
+ <a href="https://github.com/dismissibleio/dismissible-api/blob/main/LICENSE" target="_blank"><img src="https://img.shields.io/npm/l/@dismissible/nestjs-item.svg" alt="Package License" /></a>
9
+ <a href="https://www.npmjs.com/package/@dismissible/nestjs-item" target="_blank"><img src="https://img.shields.io/npm/dm/@dismissible/nestjs-item.svg" alt="NPM Downloads" /></a>
10
+ <a href="https://github.com/dismissibleio/dismissible-api" target="_blank"><img alt="GitHub Actions Workflow Status" src="https://img.shields.io/github/actions/workflow/status/dismissibleio/dismissible-api/release.yml"></a>
11
+ <a href="https://paypal.me/joshstuartx" target="_blank"><img src="https://img.shields.io/badge/Donate-PayPal-ff3f59.svg"/></a>
12
+ </p>
13
+
14
+ Dismissible manages the state of your UI elements across sessions, so your users see what matters, once! No more onboarding messages reappearing on every tab, no more notifications haunting users across devices. Dismissible syncs dismissal state everywhere, so every message is intentional, never repetitive.
15
+
16
+ # @dismissible/nestjs-item
17
+
18
+ Core data models and factory for dismissible items in NestJS applications.
19
+
20
+ > **Part of the Dismissible API** - This library is part of the [Dismissible API](https://dismissible.io) ecosystem. Visit [dismissible.io](https://dismissible.io) for more information and documentation.
21
+
22
+ ## Overview
23
+
24
+ This library provides the foundational data structures for the Dismissible system:
25
+
26
+ - `DismissibleItemDto` - The core data transfer object representing a dismissible item
27
+ - `DismissibleItemFactory` - Factory for creating and manipulating dismissible items
28
+
29
+ ## Installation
30
+
31
+ ```bash
32
+ npm install @dismissible/nestjs-item
33
+ ```
34
+
35
+ ## Getting Started
36
+
37
+ ### Basic Usage
38
+
39
+ The `DismissibleItemDto` class represents a dismissible item with the following properties:
40
+
41
+ - `id` - Unique identifier for the item
42
+ - `userId` - User identifier who owns the item
43
+ - `createdAt` - Timestamp when the item was created
44
+ - `dismissedAt` - Optional timestamp when the item was dismissed
45
+
46
+ ```typescript
47
+ import { DismissibleItemDto } from '@dismissible/nestjs-item';
48
+
49
+ const item: DismissibleItemDto = {
50
+ id: 'welcome-banner',
51
+ userId: 'user-123',
52
+ createdAt: new Date(),
53
+ };
54
+ ```
55
+
56
+ ### Using the Factory
57
+
58
+ The `DismissibleItemFactory` provides methods for creating and manipulating items:
59
+
60
+ ```typescript
61
+ import { Module } from '@nestjs/common';
62
+ import { DismissibleItemModule, DismissibleItemFactory } from '@dismissible/nestjs-item';
63
+
64
+ @Module({
65
+ imports: [DismissibleItemModule],
66
+ })
67
+ export class AppModule {}
68
+
69
+ // In your service
70
+ import { Injectable } from '@nestjs/common';
71
+ import { DismissibleItemFactory, DismissibleItemDto } from '@dismissible/nestjs-item';
72
+
73
+ @Injectable()
74
+ export class MyService {
75
+ constructor(private readonly itemFactory: DismissibleItemFactory) {}
76
+
77
+ createItem(): DismissibleItemDto {
78
+ return this.itemFactory.create({
79
+ id: 'welcome-banner',
80
+ userId: 'user-123',
81
+ createdAt: new Date(),
82
+ });
83
+ }
84
+
85
+ dismissItem(item: DismissibleItemDto): DismissibleItemDto {
86
+ return this.itemFactory.createDismissed(item, new Date());
87
+ }
88
+
89
+ restoreItem(item: DismissibleItemDto): DismissibleItemDto {
90
+ return this.itemFactory.createRestored(item);
91
+ }
92
+ }
93
+ ```
94
+
95
+ ## API Reference
96
+
97
+ ### DismissibleItemDto
98
+
99
+ The main data transfer object for dismissible items.
100
+
101
+ ```typescript
102
+ class DismissibleItemDto {
103
+ id: string;
104
+ userId: string;
105
+ createdAt: Date;
106
+ dismissedAt?: Date;
107
+ }
108
+ ```
109
+
110
+ ### DismissibleItemFactory
111
+
112
+ Factory for creating and manipulating dismissible items.
113
+
114
+ #### Methods
115
+
116
+ - `create(options)` - Create a new item from options
117
+ - `clone(item)` - Create a clone of an existing item
118
+ - `createDismissed(item, dismissedAt)` - Create a dismissed version of an item
119
+ - `createRestored(item)` - Create a restored (non-dismissed) version of an item
120
+
121
+ ## Related Packages
122
+
123
+ This library is typically used alongside other Dismissible packages:
124
+
125
+ - `@dismissible/nestjs-core` - Main dismissible service and module
126
+ - `@dismissible/nestjs-storage` - Storage interface and adapters
127
+ - `@dismissible/nestjs-postgres-storage` - PostgreSQL storage adapter
128
+
129
+ ## License
130
+
131
+ MIT
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@dismissible/nestjs-item",
3
+ "version": "1.0.3-alpha.064e57a.0",
4
+ "description": "Dismissible item library",
5
+ "main": "./src/index.js",
6
+ "types": "./src/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "import": "./src/index.mjs",
10
+ "require": "./src/index.js",
11
+ "types": "./src/index.d.ts"
12
+ }
13
+ },
14
+ "files": [
15
+ "src",
16
+ "README.md",
17
+ "LICENSE.md"
18
+ ],
19
+ "peerDependencies": {
20
+ "@nestjs/common": "10.0.0 || ^11.0.0",
21
+ "@nestjs/swagger": "10.0.0 || ^11.0.0",
22
+ "class-validator": "0.14.3",
23
+ "class-transformer": "0.5.1"
24
+ },
25
+ "peerDependenciesMeta": {
26
+ "@nestjs/common": {
27
+ "optional": false
28
+ },
29
+ "@nestjs/swagger": {
30
+ "optional": false
31
+ },
32
+ "class-validator": {
33
+ "optional": false
34
+ },
35
+ "class-transformer": {
36
+ "optional": false
37
+ }
38
+ },
39
+ "keywords": [
40
+ "nestjs",
41
+ "dismissible",
42
+ "item"
43
+ ],
44
+ "author": "",
45
+ "license": "MIT",
46
+ "repository": {
47
+ "type": "git",
48
+ "url": "https://github.com/DismissibleIo/dismissible-api"
49
+ },
50
+ "publishConfig": {
51
+ "access": "public"
52
+ },
53
+ "type": "commonjs"
54
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Represents a dismissible item in the system.
3
+ */
4
+ export declare class DismissibleItemDto {
5
+ id: string;
6
+ userId: string;
7
+ createdAt: Date;
8
+ dismissedAt?: Date;
9
+ }
@@ -0,0 +1,34 @@
1
+ import { DismissibleItemDto } from './dismissible-item';
2
+ /**
3
+ * Options for creating a dismissible item.
4
+ */
5
+ export interface ICreateDismissibleItemOptions {
6
+ id: string;
7
+ createdAt: Date;
8
+ userId: string;
9
+ dismissedAt?: Date;
10
+ }
11
+ /**
12
+ * Factory for creating DismissibleItemDto instances.
13
+ * Uses class-transformer to ensure proper class instantiation.
14
+ */
15
+ export declare class DismissibleItemFactory {
16
+ /**
17
+ * Create a new DismissibleItemDto instance from the provided options.
18
+ * Uses plainToInstance to ensure the result is a proper class instance.
19
+ */
20
+ create(options: ICreateDismissibleItemOptions): DismissibleItemDto;
21
+ /**
22
+ * Create a clone of an existing DismissibleItemDto.
23
+ */
24
+ clone(item: DismissibleItemDto): DismissibleItemDto;
25
+ /**
26
+ * Create a dismissed version of an existing item.
27
+ */
28
+ createDismissed(item: DismissibleItemDto, dismissedAt: Date): DismissibleItemDto;
29
+ /**
30
+ * Create a restored (non-dismissed) version of an existing item.
31
+ * Removes the dismissedAt property.
32
+ */
33
+ createRestored(item: DismissibleItemDto): DismissibleItemDto;
34
+ }
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DismissibleItemFactory = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const class_transformer_1 = require("class-transformer");
7
+ const dismissible_item_1 = require("./dismissible-item");
8
+ /**
9
+ * Factory for creating DismissibleItemDto instances.
10
+ * Uses class-transformer to ensure proper class instantiation.
11
+ */
12
+ let DismissibleItemFactory = class DismissibleItemFactory {
13
+ /**
14
+ * Create a new DismissibleItemDto instance from the provided options.
15
+ * Uses plainToInstance to ensure the result is a proper class instance.
16
+ */
17
+ create(options) {
18
+ return (0, class_transformer_1.plainToInstance)(dismissible_item_1.DismissibleItemDto, options, {
19
+ excludeExtraneousValues: false,
20
+ enableImplicitConversion: true,
21
+ });
22
+ }
23
+ /**
24
+ * Create a clone of an existing DismissibleItemDto.
25
+ */
26
+ clone(item) {
27
+ return this.create({
28
+ id: item.id,
29
+ createdAt: item.createdAt,
30
+ userId: item.userId,
31
+ dismissedAt: item.dismissedAt,
32
+ });
33
+ }
34
+ /**
35
+ * Create a dismissed version of an existing item.
36
+ */
37
+ createDismissed(item, dismissedAt) {
38
+ return this.create({
39
+ id: item.id,
40
+ createdAt: item.createdAt,
41
+ userId: item.userId,
42
+ dismissedAt,
43
+ });
44
+ }
45
+ /**
46
+ * Create a restored (non-dismissed) version of an existing item.
47
+ * Removes the dismissedAt property.
48
+ */
49
+ createRestored(item) {
50
+ return this.create({
51
+ id: item.id,
52
+ createdAt: item.createdAt,
53
+ userId: item.userId,
54
+ dismissedAt: undefined,
55
+ });
56
+ }
57
+ };
58
+ exports.DismissibleItemFactory = DismissibleItemFactory;
59
+ exports.DismissibleItemFactory = DismissibleItemFactory = tslib_1.__decorate([
60
+ (0, common_1.Injectable)()
61
+ ], DismissibleItemFactory);
62
+ //# sourceMappingURL=dismissible-item.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dismissible-item.factory.js","sourceRoot":"","sources":["../../../../libs/item/src/dismissible-item.factory.ts"],"names":[],"mappings":";;;;AAAA,2CAA4C;AAC5C,yDAAoD;AACpD,yDAAwD;AAYxD;;;GAGG;AAEI,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACjC;;;OAGG;IACH,MAAM,CAAC,OAAsC;QAC3C,OAAO,IAAA,mCAAe,EAAC,qCAAkB,EAAE,OAAO,EAAE;YAClD,uBAAuB,EAAE,KAAK;YAC9B,wBAAwB,EAAE,IAAI;SAC/B,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAwB;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC;YACjB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,IAAwB,EAAE,WAAiB;QACzD,OAAO,IAAI,CAAC,MAAM,CAAC;YACjB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,IAAwB;QACrC,OAAO,IAAI,CAAC,MAAM,CAAC;YACjB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,SAAS;SACvB,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAhDY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAU,GAAE;GACA,sBAAsB,CAgDlC"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DismissibleItemDto = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const swagger_1 = require("@nestjs/swagger");
6
+ const class_validator_1 = require("class-validator");
7
+ const class_transformer_1 = require("class-transformer");
8
+ /**
9
+ * Represents a dismissible item in the system.
10
+ */
11
+ class DismissibleItemDto {
12
+ }
13
+ exports.DismissibleItemDto = DismissibleItemDto;
14
+ tslib_1.__decorate([
15
+ (0, swagger_1.ApiProperty)({
16
+ description: 'Unique identifier for the item',
17
+ example: 'welcome-banner-v2',
18
+ }),
19
+ (0, class_validator_1.IsString)(),
20
+ tslib_1.__metadata("design:type", String)
21
+ ], DismissibleItemDto.prototype, "id", void 0);
22
+ tslib_1.__decorate([
23
+ (0, swagger_1.ApiProperty)({
24
+ description: 'User identifier who created the item',
25
+ example: 'user-123',
26
+ }),
27
+ (0, class_validator_1.IsString)(),
28
+ tslib_1.__metadata("design:type", String)
29
+ ], DismissibleItemDto.prototype, "userId", void 0);
30
+ tslib_1.__decorate([
31
+ (0, swagger_1.ApiProperty)({
32
+ description: 'When the item was created',
33
+ example: '2024-01-15T10:30:00.000Z',
34
+ }),
35
+ (0, class_validator_1.IsDate)(),
36
+ (0, class_transformer_1.Type)(() => Date),
37
+ tslib_1.__metadata("design:type", Date)
38
+ ], DismissibleItemDto.prototype, "createdAt", void 0);
39
+ tslib_1.__decorate([
40
+ (0, swagger_1.ApiPropertyOptional)({
41
+ description: 'When the item was dismissed, if applicable',
42
+ example: '2024-01-15T12:00:00.000Z',
43
+ }),
44
+ (0, class_validator_1.IsOptional)(),
45
+ (0, class_validator_1.IsDate)(),
46
+ (0, class_transformer_1.Type)(() => Date),
47
+ tslib_1.__metadata("design:type", Date)
48
+ ], DismissibleItemDto.prototype, "dismissedAt", void 0);
49
+ //# sourceMappingURL=dismissible-item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dismissible-item.js","sourceRoot":"","sources":["../../../../libs/item/src/dismissible-item.ts"],"names":[],"mappings":";;;;AAAA,6CAAmE;AACnE,qDAA+D;AAC/D,yDAAyC;AAEzC;;GAEG;AACH,MAAa,kBAAkB;CA+B9B;AA/BD,gDA+BC;AAzBC;IALC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,gCAAgC;QAC7C,OAAO,EAAE,mBAAmB;KAC7B,CAAC;IACD,IAAA,0BAAQ,GAAE;;8CACC;AAOZ;IALC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,sCAAsC;QACnD,OAAO,EAAE,UAAU;KACpB,CAAC;IACD,IAAA,0BAAQ,GAAE;;kDACK;AAQhB;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,2BAA2B;QACxC,OAAO,EAAE,0BAA0B;KACpC,CAAC;IACD,IAAA,wBAAM,GAAE;IACR,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC;sCACL,IAAI;qDAAC;AASjB;IAPC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,4CAA4C;QACzD,OAAO,EAAE,0BAA0B;KACpC,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC;sCACH,IAAI;uDAAC"}
@@ -0,0 +1,2 @@
1
+ export declare class DismissibleItemModule {
2
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DismissibleItemModule = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const dismissible_item_factory_1 = require("./dismissible-item.factory");
7
+ let DismissibleItemModule = class DismissibleItemModule {
8
+ };
9
+ exports.DismissibleItemModule = DismissibleItemModule;
10
+ exports.DismissibleItemModule = DismissibleItemModule = tslib_1.__decorate([
11
+ (0, common_1.Module)({
12
+ providers: [dismissible_item_factory_1.DismissibleItemFactory],
13
+ exports: [dismissible_item_factory_1.DismissibleItemFactory],
14
+ })
15
+ ], DismissibleItemModule);
16
+ //# sourceMappingURL=dismissible-item.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dismissible-item.module.js","sourceRoot":"","sources":["../../../../libs/item/src/dismissible-item.module.ts"],"names":[],"mappings":";;;;AAAA,2CAAwC;AACxC,yEAAoE;AAM7D,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;CAAG,CAAA;AAAxB,sDAAqB;gCAArB,qBAAqB;IAJjC,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,iDAAsB,CAAC;QACnC,OAAO,EAAE,CAAC,iDAAsB,CAAC;KAClC,CAAC;GACW,qBAAqB,CAAG"}
package/src/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './dismissible-item';
2
+ export * from './dismissible-item.factory';
3
+ export * from './dismissible-item.module';
package/src/index.js ADDED
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./dismissible-item"), exports);
5
+ tslib_1.__exportStar(require("./dismissible-item.factory"), exports);
6
+ tslib_1.__exportStar(require("./dismissible-item.module"), exports);
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/item/src/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC;AACnC,qEAA2C;AAC3C,oEAA0C"}