@dungarees/qwik 0.11.6 → 0.12.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.
@@ -1,4 +1,4 @@
1
- import type { ApplicationFactory, BehaviorsTools, RequiredApplicationConfig } from './type.ts';
1
+ import type { ApplicationFactory, BehaviorsTools, RequiredApplicationConfig } from './application.ts';
2
2
  export declare const createBehaviorsHook: <const APPLICATION extends RequiredApplicationConfig>({ application, identityTransform, }: {
3
3
  application: ApplicationFactory<APPLICATION>;
4
4
  identityTransform?: (identity: APPLICATION["identity"]) => APPLICATION["identity"];
package/hooks.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { BehaviorByName, BehaviorName, BehaviorsTools, LoadBehaviorsByName, QwikApplicationConfig } from './type.ts';
1
+ import type { BehaviorByName, BehaviorName, BehaviorsTools, LoadBehaviorsByName, QwikApplicationConfig } from './application.ts';
2
2
  import { type QRL, type Signal } from '@builder.io/qwik';
3
3
  import type { Observable } from 'rxjs';
4
4
  export type QwikHooks<APPLICATION extends QwikApplicationConfig> = {
package/package.json CHANGED
@@ -18,11 +18,11 @@
18
18
  },
19
19
  "author": "info@productkind.com",
20
20
  "license": "MIT",
21
- "version": "0.11.6",
21
+ "version": "0.12.0",
22
22
  "exports": {
23
- "./behaviors-hook.test.ts": {
24
- "import": "./behaviors-hook.test.js",
25
- "types": "./behaviors-hook.test.d.ts"
23
+ "./application.ts": {
24
+ "import": "./application.js",
25
+ "types": "./application.d.ts"
26
26
  },
27
27
  "./behaviors-hook.ts": {
28
28
  "import": "./behaviors-hook.js",
@@ -39,10 +39,6 @@
39
39
  "./identity.ts": {
40
40
  "import": "./identity.js",
41
41
  "types": "./identity.d.ts"
42
- },
43
- "./type.ts": {
44
- "import": "./type.js",
45
- "types": "./type.d.ts"
46
42
  }
47
43
  }
48
44
  }
@@ -1,129 +0,0 @@
1
- import { createBehaviorsHook } from './behaviors-hook.js';
2
- import { createApplication } from '@dungarees/core/application.ts';
3
- import { expect, expectTypeOf, test } from 'vitest';
4
- const createGreeterApplication = (name = 'greeter1') => createApplication({
5
- getBehaviors: [{ pattern: 'key', value: () => ({ greeter: { name } }) }],
6
- });
7
- test('loadBehaviors hands back one behaviour by name', () => {
8
- const { loadBehaviors } = createBehaviorsHook({ application: () => createGreeterApplication() });
9
- expect(loadBehaviors('key', 'greeter').name).toBe('greeter1');
10
- });
11
- test('loadBehaviors types the behaviour it hands back', () => {
12
- const { loadBehaviors } = createBehaviorsHook({ application: () => createGreeterApplication() });
13
- expectTypeOf(loadBehaviors('key', 'greeter')).toEqualTypeOf();
14
- });
15
- test('loadBehaviors hands back every behaviour when no name is given', () => {
16
- const { loadBehaviors } = createBehaviorsHook({ application: () => createGreeterApplication() });
17
- expect(loadBehaviors('key')).toEqual({ greeter: { name: 'greeter1' } });
18
- });
19
- test('loadBehaviors types the whole set when no name is given', () => {
20
- const { loadBehaviors } = createBehaviorsHook({ application: () => createGreeterApplication() });
21
- expectTypeOf(loadBehaviors('key')).toEqualTypeOf();
22
- });
23
- test('loadBehaviors reports an identity the application does not cover', () => {
24
- const { loadBehaviors } = createBehaviorsHook({ application: () => createGreeterApplication() });
25
- // @ts-expect-error 'key2' is not an identity this application declares
26
- expect(() => loadBehaviors('key2', 'greeter')).toThrow('Behaviors are not set for "key2"');
27
- });
28
- test('loadBehaviors hands back the same instance every time', () => {
29
- const { loadBehaviors } = createBehaviorsHook({ application: () => createGreeterApplication() });
30
- expect(loadBehaviors('key', 'greeter')).toBe(loadBehaviors('key', 'greeter'));
31
- });
32
- test('behaviours set for the server are used instead of running the application', () => {
33
- const { loadBehaviors, setServerBehaviors } = createBehaviorsHook({
34
- application: () => createGreeterApplication(),
35
- });
36
- setServerBehaviors({ behaviors: { greeter: { name: 'from-server' } } });
37
- expect(loadBehaviors('key', 'greeter').name).toBe('from-server');
38
- expect(loadBehaviors('key')).toEqual({ greeter: { name: 'from-server' } });
39
- });
40
- test('behaviours set for the server stop the application from running at all', () => {
41
- const applicationRuns = [];
42
- const { loadBehaviors, setServerBehaviors } = createBehaviorsHook({
43
- application: () => {
44
- applicationRuns.push(true);
45
- return createGreeterApplication();
46
- },
47
- });
48
- setServerBehaviors({ behaviors: { greeter: { name: 'from-server' } } });
49
- loadBehaviors('key', 'greeter');
50
- loadBehaviors('key', 'greeter');
51
- expect(applicationRuns).toEqual([]);
52
- });
53
- test('exportBehaviorsState exports through the application', () => {
54
- const application = createApplication({
55
- exportState: () => 'state',
56
- getBehaviors: [{ pattern: 'key', value: () => ({ greeter: { name: 'greeter' } }) }],
57
- });
58
- const { exportBehaviorsState } = createBehaviorsHook({ application: () => application });
59
- expect(exportBehaviorsState('key')).toBe('state');
60
- });
61
- test('an export set for the server wins over the application', () => {
62
- const application = createApplication({
63
- exportState: () => 'state',
64
- getBehaviors: [{ pattern: 'key', value: () => ({ greeter: { name: 'greeter' } }) }],
65
- });
66
- const { exportBehaviorsState, setServerBehaviors } = createBehaviorsHook({
67
- application: () => application,
68
- });
69
- setServerBehaviors({
70
- behaviors: { greeter: { name: 'greeter' } },
71
- exportState: () => 'other-state',
72
- });
73
- expect(exportBehaviorsState('key')).toBe('other-state');
74
- });
75
- test('exportBehaviorsState fails when neither the application nor the server provides one', () => {
76
- const { exportBehaviorsState, setServerBehaviors } = createBehaviorsHook({
77
- application: () => createGreeterApplication(),
78
- });
79
- setServerBehaviors({ behaviors: { greeter: { name: 'greeter' } } });
80
- expect(() => exportBehaviorsState('key')).toThrow('Export state is not defined');
81
- });
82
- test('importBehaviorsState imports through the application', () => {
83
- const imported = [];
84
- const application = createApplication({
85
- importState: (_, state) => {
86
- imported.push(state);
87
- },
88
- getBehaviors: [{ pattern: 'key', value: () => ({ greeter: { name: 'greeter' } }) }],
89
- });
90
- const { importBehaviorsState } = createBehaviorsHook({ application: () => application });
91
- importBehaviorsState({ identity: 'key', state: 'state' });
92
- expect(imported).toEqual(['state']);
93
- });
94
- test('the identity can be transformed before the application is run', () => {
95
- const seenIdentities = [];
96
- const runIdentities = [];
97
- const application = createApplication({
98
- getBehaviors: [
99
- { pattern: 'frontend', value: () => ({ greeter: { name: 'frontend' } }) },
100
- { pattern: 'ssr', value: () => ({ greeter: { name: 'ssr' } }) },
101
- ],
102
- main: (_, identity) => {
103
- runIdentities.push(identity);
104
- },
105
- });
106
- const { loadBehaviors } = createBehaviorsHook({
107
- application: () => application,
108
- identityTransform: (identity) => {
109
- seenIdentities.push(identity);
110
- return 'frontend';
111
- },
112
- });
113
- loadBehaviors('ssr', 'greeter');
114
- expect(seenIdentities).toEqual(['ssr']);
115
- expect(runIdentities).toEqual(['frontend']);
116
- });
117
- test('the transformed identity is what selects the behaviours', () => {
118
- const application = createApplication({
119
- getBehaviors: [
120
- { pattern: 'frontend', value: () => ({ greeter: { name: 'frontend' } }) },
121
- { pattern: 'ssr', value: () => ({ greeter: { name: 'ssr' } }) },
122
- ],
123
- });
124
- const { loadBehaviors } = createBehaviorsHook({
125
- application: () => application,
126
- identityTransform: () => 'frontend',
127
- });
128
- expect(loadBehaviors('ssr', 'greeter').name).toBe('frontend');
129
- });
package/type.js DELETED
@@ -1 +0,0 @@
1
- export {};
File without changes
File without changes