@drawbridge/drawbridge-utils 0.0.57 → 0.0.58

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/dist/color.cjs ADDED
@@ -0,0 +1,69 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // lib/color.js
30
+ var color_exports = {};
31
+ __export(color_exports, {
32
+ colorAccessible: () => colorAccessible,
33
+ colorFormatted: () => colorFormatted
34
+ });
35
+ module.exports = __toCommonJS(color_exports);
36
+ var import_tinycolor2 = __toESM(require("tinycolor2"), 1);
37
+ var colorFormatted = (value) => {
38
+ const color = (0, import_tinycolor2.default)(value);
39
+ const attributes = {
40
+ brightness: color.getBrightness(),
41
+ dark: color.isDark(),
42
+ light: color.isLight(),
43
+ luminance: color.getLuminance()
44
+ };
45
+ return {
46
+ attributes,
47
+ hex: color.toHexString(),
48
+ hsl: color.toHsl(),
49
+ hsv: color.toHsv(),
50
+ rgb: color.toRgbString()
51
+ };
52
+ };
53
+ var colorAccessible = (background) => {
54
+ const white = "#ffffff";
55
+ const black = "#000000";
56
+ return import_tinycolor2.default.isReadable(
57
+ background,
58
+ white,
59
+ {
60
+ level: "AA",
61
+ size: "normal"
62
+ }
63
+ ) ? white : black;
64
+ };
65
+ // Annotate the CommonJS export names for ESM import in node:
66
+ 0 && (module.exports = {
67
+ colorAccessible,
68
+ colorFormatted
69
+ });
@@ -0,0 +1,45 @@
1
+ import tinycolor from 'tinycolor2';
2
+
3
+ // Color helpers shared across the Drawbridge stack (api seeding, sync
4
+ // generation pipeline, campaign defaults). `colorFormatted` emits the full
5
+ // shape the DB `style` blocks store and `extend.js` reads
6
+ // ( style.*.color.attributes.luminance ); `colorAccessible` picks black/white
7
+ // for AA-readable text over a background.
8
+ const colorFormatted = ( value ) => {
9
+
10
+ const color = tinycolor( value );
11
+
12
+ const attributes = {
13
+ brightness : color.getBrightness(),
14
+ dark : color.isDark(),
15
+ light : color.isLight(),
16
+ luminance : color.getLuminance()
17
+ };
18
+
19
+ return {
20
+ attributes,
21
+ hex : color.toHexString(),
22
+ hsl : color.toHsl(),
23
+ hsv : color.toHsv(),
24
+ rgb : color.toRgbString()
25
+ };
26
+
27
+ };
28
+
29
+ const colorAccessible = ( background ) => {
30
+
31
+ const white = '#ffffff';
32
+ const black = '#000000';
33
+
34
+ return tinycolor.isReadable(
35
+ background,
36
+ white,
37
+ {
38
+ level : 'AA',
39
+ size : 'normal'
40
+ }
41
+ ) ? white : black;
42
+
43
+ };
44
+
45
+ export { colorAccessible, colorFormatted };
@@ -0,0 +1,45 @@
1
+ import tinycolor from 'tinycolor2';
2
+
3
+ // Color helpers shared across the Drawbridge stack (api seeding, sync
4
+ // generation pipeline, campaign defaults). `colorFormatted` emits the full
5
+ // shape the DB `style` blocks store and `extend.js` reads
6
+ // ( style.*.color.attributes.luminance ); `colorAccessible` picks black/white
7
+ // for AA-readable text over a background.
8
+ const colorFormatted = ( value ) => {
9
+
10
+ const color = tinycolor( value );
11
+
12
+ const attributes = {
13
+ brightness : color.getBrightness(),
14
+ dark : color.isDark(),
15
+ light : color.isLight(),
16
+ luminance : color.getLuminance()
17
+ };
18
+
19
+ return {
20
+ attributes,
21
+ hex : color.toHexString(),
22
+ hsl : color.toHsl(),
23
+ hsv : color.toHsv(),
24
+ rgb : color.toRgbString()
25
+ };
26
+
27
+ };
28
+
29
+ const colorAccessible = ( background ) => {
30
+
31
+ const white = '#ffffff';
32
+ const black = '#000000';
33
+
34
+ return tinycolor.isReadable(
35
+ background,
36
+ white,
37
+ {
38
+ level : 'AA',
39
+ size : 'normal'
40
+ }
41
+ ) ? white : black;
42
+
43
+ };
44
+
45
+ export { colorAccessible, colorFormatted };
package/dist/color.js ADDED
@@ -0,0 +1,34 @@
1
+ // lib/color.js
2
+ import tinycolor from "tinycolor2";
3
+ var colorFormatted = (value) => {
4
+ const color = tinycolor(value);
5
+ const attributes = {
6
+ brightness: color.getBrightness(),
7
+ dark: color.isDark(),
8
+ light: color.isLight(),
9
+ luminance: color.getLuminance()
10
+ };
11
+ return {
12
+ attributes,
13
+ hex: color.toHexString(),
14
+ hsl: color.toHsl(),
15
+ hsv: color.toHsv(),
16
+ rgb: color.toRgbString()
17
+ };
18
+ };
19
+ var colorAccessible = (background) => {
20
+ const white = "#ffffff";
21
+ const black = "#000000";
22
+ return tinycolor.isReadable(
23
+ background,
24
+ white,
25
+ {
26
+ level: "AA",
27
+ size: "normal"
28
+ }
29
+ ) ? white : black;
30
+ };
31
+ export {
32
+ colorAccessible,
33
+ colorFormatted
34
+ };
package/dist/index.cjs CHANGED
@@ -1,6 +1,8 @@
1
+ var __create = Object.create;
1
2
  var __defProp = Object.defineProperty;
2
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
4
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
7
  var __export = (target, all) => {
6
8
  for (var name in all)
@@ -14,6 +16,14 @@ var __copyProps = (to, from, except, desc) => {
14
16
  }
15
17
  return to;
16
18
  };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
17
27
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
28
 
19
29
  // index.js
@@ -46,18 +56,69 @@ module.exports = __toCommonJS(index_exports);
46
56
  var import_currency_codes = require("currency-codes");
47
57
  var import_nanoid = require("nanoid");
48
58
 
59
+ // lib/color.js
60
+ var import_tinycolor2 = __toESM(require("tinycolor2"), 1);
61
+ var colorFormatted = (value) => {
62
+ const color = (0, import_tinycolor2.default)(value);
63
+ const attributes = {
64
+ brightness: color.getBrightness(),
65
+ dark: color.isDark(),
66
+ light: color.isLight(),
67
+ luminance: color.getLuminance()
68
+ };
69
+ return {
70
+ attributes,
71
+ hex: color.toHexString(),
72
+ hsl: color.toHsl(),
73
+ hsv: color.toHsv(),
74
+ rgb: color.toRgbString()
75
+ };
76
+ };
77
+ var colorAccessible = (background2) => {
78
+ const white = "#ffffff";
79
+ const black = "#000000";
80
+ return import_tinycolor2.default.isReadable(
81
+ background2,
82
+ white,
83
+ {
84
+ level: "AA",
85
+ size: "normal"
86
+ }
87
+ ) ? white : black;
88
+ };
89
+
49
90
  // lib/constants.js
50
91
  var font = {
51
92
  family: "Roboto Flex",
52
93
  transform: "none",
53
94
  weight: "regular"
54
95
  };
96
+ var background = "#ffffff";
97
+ var style = {
98
+ background: {
99
+ color: colorFormatted(background)
100
+ },
101
+ body: font,
102
+ button: {
103
+ background: {
104
+ color: colorFormatted(background)
105
+ },
106
+ radius: 0,
107
+ text: {
108
+ color: colorFormatted(colorAccessible(background))
109
+ }
110
+ },
111
+ heading: font,
112
+ input: {
113
+ radius: 0
114
+ },
115
+ text: {
116
+ color: colorFormatted(colorAccessible(background))
117
+ }
118
+ };
55
119
  var constants_default = {
56
120
  brand: {
57
- style: {
58
- body: font,
59
- heading: font
60
- },
121
+ style,
61
122
  totals: {
62
123
  campaigns: 0
63
124
  }
package/dist/index.d.cts CHANGED
@@ -1,5 +1,7 @@
1
1
  import { data, code } from 'currency-codes';
2
2
  import { customAlphabet } from 'nanoid';
3
+ import { colorFormatted, colorAccessible } from './color.cjs';
4
+ import 'tinycolor2';
3
5
 
4
6
  const font = {
5
7
  family : 'Roboto Flex',
@@ -7,12 +9,39 @@ const font = {
7
9
  weight : 'regular'
8
10
  };
9
11
 
12
+ // Canonical default brand/page style. Complete on purpose: every color is built
13
+ // through colorFormatted so the stored shape always carries
14
+ // `color.attributes.luminance` ( extend.js reads it directly ). White
15
+ // background with accessible ( black ) text + default fonts. Used to seed
16
+ // pending AI records and any other place needing a valid default style.
17
+ const background = '#ffffff';
18
+
19
+ const style = {
20
+ background : {
21
+ color : colorFormatted( background )
22
+ },
23
+ body : font,
24
+ button : {
25
+ background : {
26
+ color : colorFormatted( background )
27
+ },
28
+ radius : 0,
29
+ text : {
30
+ color : colorFormatted( colorAccessible( background ) )
31
+ }
32
+ },
33
+ heading : font,
34
+ input : {
35
+ radius : 0
36
+ },
37
+ text : {
38
+ color : colorFormatted( colorAccessible( background ) )
39
+ }
40
+ };
41
+
10
42
  var constantsData = {
11
43
  brand : {
12
- style : {
13
- body : font,
14
- heading : font
15
- },
44
+ style,
16
45
  totals : {
17
46
  campaigns : 0
18
47
  }
package/dist/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import { data, code } from 'currency-codes';
2
2
  import { customAlphabet } from 'nanoid';
3
+ import { colorFormatted, colorAccessible } from './color.js';
4
+ import 'tinycolor2';
3
5
 
4
6
  const font = {
5
7
  family : 'Roboto Flex',
@@ -7,12 +9,39 @@ const font = {
7
9
  weight : 'regular'
8
10
  };
9
11
 
12
+ // Canonical default brand/page style. Complete on purpose: every color is built
13
+ // through colorFormatted so the stored shape always carries
14
+ // `color.attributes.luminance` ( extend.js reads it directly ). White
15
+ // background with accessible ( black ) text + default fonts. Used to seed
16
+ // pending AI records and any other place needing a valid default style.
17
+ const background = '#ffffff';
18
+
19
+ const style = {
20
+ background : {
21
+ color : colorFormatted( background )
22
+ },
23
+ body : font,
24
+ button : {
25
+ background : {
26
+ color : colorFormatted( background )
27
+ },
28
+ radius : 0,
29
+ text : {
30
+ color : colorFormatted( colorAccessible( background ) )
31
+ }
32
+ },
33
+ heading : font,
34
+ input : {
35
+ radius : 0
36
+ },
37
+ text : {
38
+ color : colorFormatted( colorAccessible( background ) )
39
+ }
40
+ };
41
+
10
42
  var constantsData = {
11
43
  brand : {
12
- style : {
13
- body : font,
14
- heading : font
15
- },
44
+ style,
16
45
  totals : {
17
46
  campaigns : 0
18
47
  }
package/dist/index.js CHANGED
@@ -2,18 +2,69 @@
2
2
  import { code, data } from "currency-codes";
3
3
  import { customAlphabet } from "nanoid";
4
4
 
5
+ // lib/color.js
6
+ import tinycolor from "tinycolor2";
7
+ var colorFormatted = (value) => {
8
+ const color = tinycolor(value);
9
+ const attributes = {
10
+ brightness: color.getBrightness(),
11
+ dark: color.isDark(),
12
+ light: color.isLight(),
13
+ luminance: color.getLuminance()
14
+ };
15
+ return {
16
+ attributes,
17
+ hex: color.toHexString(),
18
+ hsl: color.toHsl(),
19
+ hsv: color.toHsv(),
20
+ rgb: color.toRgbString()
21
+ };
22
+ };
23
+ var colorAccessible = (background2) => {
24
+ const white = "#ffffff";
25
+ const black = "#000000";
26
+ return tinycolor.isReadable(
27
+ background2,
28
+ white,
29
+ {
30
+ level: "AA",
31
+ size: "normal"
32
+ }
33
+ ) ? white : black;
34
+ };
35
+
5
36
  // lib/constants.js
6
37
  var font = {
7
38
  family: "Roboto Flex",
8
39
  transform: "none",
9
40
  weight: "regular"
10
41
  };
42
+ var background = "#ffffff";
43
+ var style = {
44
+ background: {
45
+ color: colorFormatted(background)
46
+ },
47
+ body: font,
48
+ button: {
49
+ background: {
50
+ color: colorFormatted(background)
51
+ },
52
+ radius: 0,
53
+ text: {
54
+ color: colorFormatted(colorAccessible(background))
55
+ }
56
+ },
57
+ heading: font,
58
+ input: {
59
+ radius: 0
60
+ },
61
+ text: {
62
+ color: colorFormatted(colorAccessible(background))
63
+ }
64
+ };
11
65
  var constants_default = {
12
66
  brand: {
13
- style: {
14
- body: font,
15
- heading: font
16
- },
67
+ style,
17
68
  totals: {
18
69
  campaigns: 0
19
70
  }
package/dist/plans.cjs CHANGED
@@ -1,6 +1,8 @@
1
+ var __create = Object.create;
1
2
  var __defProp = Object.defineProperty;
2
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
4
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
7
  var __export = (target, all2) => {
6
8
  for (var name in all2)
@@ -14,6 +16,14 @@ var __copyProps = (to, from, except, desc) => {
14
16
  }
15
17
  return to;
16
18
  };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
17
27
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
28
 
19
29
  // lib/plans.js
@@ -160,6 +170,69 @@ var organization = {
160
170
  // index.js
161
171
  var import_currency_codes = require("currency-codes");
162
172
  var import_nanoid = require("nanoid");
173
+
174
+ // lib/color.js
175
+ var import_tinycolor2 = __toESM(require("tinycolor2"), 1);
176
+ var colorFormatted = (value) => {
177
+ const color = (0, import_tinycolor2.default)(value);
178
+ const attributes = {
179
+ brightness: color.getBrightness(),
180
+ dark: color.isDark(),
181
+ light: color.isLight(),
182
+ luminance: color.getLuminance()
183
+ };
184
+ return {
185
+ attributes,
186
+ hex: color.toHexString(),
187
+ hsl: color.toHsl(),
188
+ hsv: color.toHsv(),
189
+ rgb: color.toRgbString()
190
+ };
191
+ };
192
+ var colorAccessible = (background2) => {
193
+ const white = "#ffffff";
194
+ const black = "#000000";
195
+ return import_tinycolor2.default.isReadable(
196
+ background2,
197
+ white,
198
+ {
199
+ level: "AA",
200
+ size: "normal"
201
+ }
202
+ ) ? white : black;
203
+ };
204
+
205
+ // lib/constants.js
206
+ var font = {
207
+ family: "Roboto Flex",
208
+ transform: "none",
209
+ weight: "regular"
210
+ };
211
+ var background = "#ffffff";
212
+ var style = {
213
+ background: {
214
+ color: colorFormatted(background)
215
+ },
216
+ body: font,
217
+ button: {
218
+ background: {
219
+ color: colorFormatted(background)
220
+ },
221
+ radius: 0,
222
+ text: {
223
+ color: colorFormatted(colorAccessible(background))
224
+ }
225
+ },
226
+ heading: font,
227
+ input: {
228
+ radius: 0
229
+ },
230
+ text: {
231
+ color: colorFormatted(colorAccessible(background))
232
+ }
233
+ };
234
+
235
+ // index.js
163
236
  var nanoid = (0, import_nanoid.customAlphabet)("0123456789abcdefghijklmnopqrstuvwxyz", 8);
164
237
  var infinite = 1e300;
165
238
  var megabyte = 1024 * 1024;
package/dist/plans.d.cts CHANGED
@@ -2,6 +2,8 @@ import { organization, page, connection, fields, field } from './features.cjs';
2
2
  import { infinite, gigabyte } from './index.cjs';
3
3
  import 'currency-codes';
4
4
  import 'nanoid';
5
+ import './color.cjs';
6
+ import 'tinycolor2';
5
7
 
6
8
  const featuresFor = ( array = [] ) => Object.values({
7
9
  ...connection,
package/dist/plans.d.ts CHANGED
@@ -2,6 +2,8 @@ import { organization, page, connection, fields, field } from './features.js';
2
2
  import { infinite, gigabyte } from './index.js';
3
3
  import 'currency-codes';
4
4
  import 'nanoid';
5
+ import './color.js';
6
+ import 'tinycolor2';
5
7
 
6
8
  const featuresFor = ( array = [] ) => Object.values({
7
9
  ...connection,
package/dist/plans.js CHANGED
@@ -133,6 +133,69 @@ var organization = {
133
133
  // index.js
134
134
  import { code, data } from "currency-codes";
135
135
  import { customAlphabet } from "nanoid";
136
+
137
+ // lib/color.js
138
+ import tinycolor from "tinycolor2";
139
+ var colorFormatted = (value) => {
140
+ const color = tinycolor(value);
141
+ const attributes = {
142
+ brightness: color.getBrightness(),
143
+ dark: color.isDark(),
144
+ light: color.isLight(),
145
+ luminance: color.getLuminance()
146
+ };
147
+ return {
148
+ attributes,
149
+ hex: color.toHexString(),
150
+ hsl: color.toHsl(),
151
+ hsv: color.toHsv(),
152
+ rgb: color.toRgbString()
153
+ };
154
+ };
155
+ var colorAccessible = (background2) => {
156
+ const white = "#ffffff";
157
+ const black = "#000000";
158
+ return tinycolor.isReadable(
159
+ background2,
160
+ white,
161
+ {
162
+ level: "AA",
163
+ size: "normal"
164
+ }
165
+ ) ? white : black;
166
+ };
167
+
168
+ // lib/constants.js
169
+ var font = {
170
+ family: "Roboto Flex",
171
+ transform: "none",
172
+ weight: "regular"
173
+ };
174
+ var background = "#ffffff";
175
+ var style = {
176
+ background: {
177
+ color: colorFormatted(background)
178
+ },
179
+ body: font,
180
+ button: {
181
+ background: {
182
+ color: colorFormatted(background)
183
+ },
184
+ radius: 0,
185
+ text: {
186
+ color: colorFormatted(colorAccessible(background))
187
+ }
188
+ },
189
+ heading: font,
190
+ input: {
191
+ radius: 0
192
+ },
193
+ text: {
194
+ color: colorFormatted(colorAccessible(background))
195
+ }
196
+ };
197
+
198
+ // index.js
136
199
  var nanoid = customAlphabet("0123456789abcdefghijklmnopqrstuvwxyz", 8);
137
200
  var infinite = 1e300;
138
201
  var megabyte = 1024 * 1024;
package/package.json CHANGED
@@ -9,11 +9,15 @@
9
9
  "nanoid": "3.3.8",
10
10
  "qs": "6.15.2",
11
11
  "slugify": "1.6.6",
12
+ "tinycolor2": "1.6.0"
13
+ },
14
+ "devDependencies": {
15
+ "@node-oauth/oauth2-server": "5.3.0",
12
16
  "tsup": "8.5.1",
13
17
  "typescript": "5.9.3"
14
18
  },
15
- "devDependencies": {
16
- "@node-oauth/oauth2-server": "5.3.0"
19
+ "overrides": {
20
+ "esbuild": "0.28.1"
17
21
  },
18
22
  "peerDependencies": {
19
23
  "@node-oauth/oauth2-server": "^5.3.0"
@@ -34,6 +38,11 @@
34
38
  "import": "./dist/ai.js",
35
39
  "require": "./dist/ai.cjs"
36
40
  },
41
+ "./color": {
42
+ "types": "./dist/color.d.ts",
43
+ "import": "./dist/color.js",
44
+ "require": "./dist/color.cjs"
45
+ },
37
46
  "./encrypt": {
38
47
  "types": "./dist/encrypt.d.ts",
39
48
  "import": "./dist/encrypt.js",
@@ -145,5 +154,5 @@
145
154
  "build": "tsup && npm publish"
146
155
  },
147
156
  "types": "dist/index.d.ts",
148
- "version": "0.0.57"
157
+ "version": "0.0.58"
149
158
  }