nuxt-processor 0.0.7 → 0.0.9

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 CHANGED
@@ -5,10 +5,9 @@
5
5
  [![License][license-src]][license-href]
6
6
  [![Known Vulnerabilities](https://snyk.io/test/github/aidanhibbard/nuxt-processor/badge.svg)](https://snyk.io/test/github/aidanhibbard/nuxt-processor)
7
7
 
8
- ## Real background job processing for Nuxt
9
-
10
- <img width="752" height="402" alt="image" src="https://github.com/user-attachments/assets/9190d8e1-8a46-4b49-be5a-20f0a49fc8fe" />
8
+ ## Scalable processing for Nuxt
11
9
 
10
+ <img width="512" height="250" alt="image" src="https://github.com/user-attachments/assets/d238fb33-8373-46ec-b132-85170ab67c80" />
12
11
 
13
12
  Note: This package is under very active development! Please consider creating issues if you run into anything!
14
13
 
@@ -34,7 +33,7 @@ Note: This package is under very active development! Please consider creating is
34
33
  ## Install
35
34
 
36
35
  ```bash
37
- npm i -D nuxt-processor
36
+ npx nuxi@latest module add nuxt-processor
38
37
  ```
39
38
 
40
39
  Add the module in `nuxt.config.ts` and set your Redis connection.
@@ -65,7 +64,11 @@ Create `server/queues/hello.ts`:
65
64
  ```ts
66
65
  import { defineQueue } from '#processor'
67
66
 
68
- export default defineQueue({
67
+ type HelloName = 'hello'
68
+ type HelloData = { message: string, ts: number }
69
+ type HelloResult = { echoed: string, processedAt: number }
70
+
71
+ export default defineQueue<HelloData, HelloResult, HelloName>({
69
72
  name: 'hello',
70
73
  options: {},
71
74
  })
@@ -77,14 +80,15 @@ Create `server/workers/hello.ts`:
77
80
 
78
81
  ```ts
79
82
  import { defineWorker } from '#processor'
80
- import type { Job } from '#bullmq'
81
83
 
82
- export default defineWorker({
84
+ type HelloName = 'hello'
85
+ type HelloData = { message: string, ts: number }
86
+ type HelloResult = { echoed: string, processedAt: number }
87
+
88
+ export default defineWorker<HelloName, HelloData, HelloResult>({
83
89
  name: 'hello',
84
- async processor(job: Job) {
85
- // do work
86
- console.log('processed', job.name, job.data)
87
- return job.data
90
+ async processor(job) {
91
+ return { echoed: job.data.message, processedAt: job.data.ts }
88
92
  },
89
93
  options: {},
90
94
  })
package/dist/cli.cjs CHANGED
@@ -8,7 +8,7 @@ const pathe = require('pathe');
8
8
  const consola = require('consola');
9
9
  const citty = require('citty');
10
10
  const kit = require('@nuxt/kit');
11
- const _package = require('./shared/nuxt-processor.DGLbEfyc.cjs');
11
+ const _package = require('./shared/nuxt-processor.gTQ3Cgq_.cjs');
12
12
 
13
13
  const ensureNuxtProject = async (args) => {
14
14
  const dir = pathe.resolve(args.dir);
package/dist/cli.mjs CHANGED
@@ -6,7 +6,7 @@ import { resolve } from 'pathe';
6
6
  import { consola } from 'consola';
7
7
  import { createMain, defineCommand } from 'citty';
8
8
  import { loadNuxtConfig } from '@nuxt/kit';
9
- import { v as version, d as description, n as name } from './shared/nuxt-processor.4D52SGZK.mjs';
9
+ import { v as version, d as description, n as name } from './shared/nuxt-processor.DyQoQGHF.mjs';
10
10
 
11
11
  const ensureNuxtProject = async (args) => {
12
12
  const dir = resolve(args.dir);
package/dist/module.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  const kit = require('@nuxt/kit');
4
- const _package = require('./shared/nuxt-processor.DGLbEfyc.cjs');
4
+ const _package = require('./shared/nuxt-processor.gTQ3Cgq_.cjs');
5
5
  const node_path = require('node:path');
6
6
  const fg = require('fast-glob');
7
7
 
@@ -47,6 +47,19 @@ const module$1 = kit.defineNuxtModule({
47
47
  },
48
48
  async setup(_options, nuxt) {
49
49
  const { resolve } = kit.createResolver((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('module.cjs', document.baseURI).href)));
50
+ const nitroPlugin = `
51
+ import { $workers } from '#processor-utils'
52
+
53
+ export default defineNitroPlugin(() => {
54
+ $workers().setConnection(${JSON.stringify(_options.redis)})
55
+ })
56
+ `;
57
+ const tpl = kit.addTemplate({
58
+ filename: "0.processor-nuxt-plugin.ts",
59
+ write: true,
60
+ getContents: () => nitroPlugin
61
+ });
62
+ kit.addServerPlugin(tpl.dst);
50
63
  function generateWorkersEntryContent(workerFiles) {
51
64
  const redisInline = JSON.stringify(_options.redis ?? {});
52
65
  const toImportArray = workerFiles.map((id) => `() => import(${JSON.stringify(id)})`).join(",\n ");
package/dist/module.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nuxt-processor",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "compatibility": {
5
5
  "nuxt": "^4.0.0 || ^3.0.0"
6
6
  },
package/dist/module.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { useNuxt, createResolver, defineNuxtModule, addTypeTemplate } from '@nuxt/kit';
2
- import { c as configKey, a as compatibility, v as version, n as name } from './shared/nuxt-processor.4D52SGZK.mjs';
1
+ import { useNuxt, createResolver, defineNuxtModule, addTemplate, addServerPlugin, addTypeTemplate } from '@nuxt/kit';
2
+ import { c as configKey, a as compatibility, v as version, n as name } from './shared/nuxt-processor.DyQoQGHF.mjs';
3
3
  import { relative } from 'node:path';
4
4
  import fg from 'fast-glob';
5
5
 
@@ -40,6 +40,19 @@ const module = defineNuxtModule({
40
40
  },
41
41
  async setup(_options, nuxt) {
42
42
  const { resolve } = createResolver(import.meta.url);
43
+ const nitroPlugin = `
44
+ import { $workers } from '#processor-utils'
45
+
46
+ export default defineNitroPlugin(() => {
47
+ $workers().setConnection(${JSON.stringify(_options.redis)})
48
+ })
49
+ `;
50
+ const tpl = addTemplate({
51
+ filename: "0.processor-nuxt-plugin.ts",
52
+ write: true,
53
+ getContents: () => nitroPlugin
54
+ });
55
+ addServerPlugin(tpl.dst);
43
56
  function generateWorkersEntryContent(workerFiles) {
44
57
  const redisInline = JSON.stringify(_options.redis ?? {});
45
58
  const toImportArray = workerFiles.map((id) => `() => import(${JSON.stringify(id)})`).join(",\n ");
@@ -1,9 +1,9 @@
1
1
  import type { Queue, QueueOptions, JobsOptions } from '../utils/workers.js';
2
- type DefineQueueArgs = {
3
- name: Queue['name'];
2
+ type DefineQueueArgs<DefaultNameType extends string = string> = {
3
+ name: DefaultNameType;
4
4
  options?: Omit<QueueOptions, 'connection'> & {
5
5
  defaultJobOptions?: JobsOptions;
6
6
  };
7
7
  };
8
- export declare function defineQueue({ name, options }: DefineQueueArgs): Queue;
8
+ export declare function defineQueue<DataTypeOrJob = any, DefaultResultType = any, DefaultNameType extends string = string>({ name, options }: DefineQueueArgs<DefaultNameType>): Queue<DataTypeOrJob, DefaultResultType, DefaultNameType>;
9
9
  export default defineQueue;
@@ -1,8 +1,8 @@
1
1
  import type { Worker, WorkerOptions, Processor } from 'bullmq';
2
- type DefineWorkerArgs = {
3
- name: Worker['name'];
4
- processor: Processor;
2
+ type DefineWorkerArgs<NameType extends string = string, DataType = any, ResultType = any> = {
3
+ name: NameType;
4
+ processor: Processor<DataType, ResultType, NameType>;
5
5
  options?: Omit<WorkerOptions, 'connection'>;
6
6
  };
7
- export declare function defineWorker(args: DefineWorkerArgs): Worker;
7
+ export declare function defineWorker<NameType extends string = string, DataType = any, ResultType = any>(args: DefineWorkerArgs<NameType, DataType, ResultType>): Worker<DataType, ResultType, NameType>;
8
8
  export default defineWorker;
@@ -13,12 +13,12 @@ export declare function $workers(): {
13
13
  } & {
14
14
  url?: string;
15
15
  })) => void;
16
- createQueue: (name: string, options?: Omit<QueueOptions, "connection"> & {
16
+ createQueue: <DataTypeOrJob = any, DefaultResultType = any, DefaultNameType extends string = string>(name: DefaultNameType, options?: Omit<QueueOptions, "connection"> & {
17
17
  defaultJobOptions?: JobsOptions;
18
- }) => Queue<any, any, string, any, any, string>;
19
- createWorker: (name: string, processor: Processor, options?: Omit<WorkerOptions, "connection">) => Worker<any, any, string>;
18
+ }) => Queue<DataTypeOrJob, DefaultResultType, DefaultNameType>;
19
+ createWorker: <DataType = any, ResultType = any, NameType extends string = string>(name: NameType, processor: Processor<DataType, ResultType, NameType>, options?: Omit<WorkerOptions, "connection">) => Worker<DataType, ResultType, NameType>;
20
20
  stopAll: () => Promise<void>;
21
- readonly queues: Queue<any, any, string, any, any, string>[];
22
- readonly workers: Worker<any, any, string>[];
21
+ readonly queues: Queue<any, any, any, any, any, any>[];
22
+ readonly workers: Worker<any, any, any>[];
23
23
  };
24
24
  export type { Queue, Worker, Processor, QueueOptions, WorkerOptions, JobsOptions, Job };
@@ -1,5 +1,5 @@
1
1
  const name = "nuxt-processor";
2
- const version = "0.0.7";
2
+ const version = "0.0.9";
3
3
  const description = "Nuxt Processor";
4
4
  const configKey = "processor";
5
5
  const compatibility = {
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  const name = "nuxt-processor";
4
- const version = "0.0.7";
4
+ const version = "0.0.9";
5
5
  const description = "Nuxt Processor";
6
6
  const configKey = "processor";
7
7
  const compatibility = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nuxt-processor",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "description": "Nuxt Processor",
5
5
  "repository": "https://github.com/aidanhibbard/nuxt-processor",
6
6
  "license": "MIT",