@lix-js/sdk 0.4.1 → 0.4.3

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
@@ -1,22 +1,293 @@
1
+ > [!NOTE]
2
+ > The readme is mirrored from [opral/lix-sdk](https://github.com/opral/lix-sdk). The source code is in the [opral/monorepo](https://github.com/opral/monorepo/tree/main/packages/lix-sdk).
3
+
4
+ > [!NOTE]
5
+ > This repository serves as an issue tracker and documentation storage. The source code is in [opral/monorepo](https://github.com/opral/monorepo/tree/main/packages/lix-sdk).
6
+
1
7
  # Lix SDK
2
8
 
3
- > [!NOTE]
4
- > Docs soon and release of the SDK coming soon.
9
+ [![NPM Downloads](https://img.shields.io/npm/dw/%40lix-js%2Fsdk?logo=npm&logoColor=red&label=npm%20downloads)](https://www.npmjs.com/package/@lix-js/sdk) [![Discord](https://img.shields.io/discord/897438559458430986?style=flat&logo=discord&labelColor=white)](https://discord.gg/xjQA897RyK)
10
+
11
+
12
+ ![Lix SDK](https://cdn.jsdelivr.net/gh/opral/monorepo/packages/lix-sdk/assets/banner.png)
13
+
14
+ ## Introduction
15
+
16
+ Lix is a change control system that runs in the browser and an SDK to build web apps.
17
+
18
+ A change control system allows storing, tracking, querying, and reviewing changes in different file formats, e.g., `.xlsx`, `.sqlite`, or `.inlang`. Compared to a version control system, a change control system understands “what” changed in a file, e.g., cell C43 in the financials spreadsheet changed.
19
+
20
+ Lix is not a git replacement, nor is it designed for software engineering. The goal is to bring change control workflows to industries other than software engineering like health, finance, policy making, design, etc.
21
+
22
+ Try a [demo lix app](https://lix.opral.com/app/fm).
23
+
24
+ ## Features
25
+
26
+ - **📌 Versioning**: The possibility to create divergent states (branches in Git).
27
+ - **⚡ CI/CD**: Automations as we know them from software engineering.
28
+ - **🔀 Change Proposals**: (WIP [#242](https://github.com/opral/lix-sdk/issues/242)) Similar workflow to pull requests in Git.
29
+ - **🤝 Collaboration**: Lix comes with built-in sync, enabling asynchronous (Git-like) and real-time collaboration (Google Docs-like) capabilities.
30
+ - **✅ Validation Rules**: (WIP [#239](https://github.com/opral/lix-sdk/issues/239)) Define and enforce validation rules for your data.
31
+
32
+
33
+ ### Good to know
34
+
35
+ - 🔍 **Everything is SQL**: Querying lix happens via SQL. No new query language to learn. The lix SDK conveniently exposes [Kysely](https://kysely.dev/), a type-safe SQL query builder.
36
+ - 🌐 **Browser-based**: Lix targets the browser as target platform. Node/unix dependencies are ruled out.
37
+
38
+ ## Getting Started
39
+
40
+ > [!TIP]
41
+ > The documentation is a work in progress. If you have any questions, please open issues in the [GitHub repository](https://github.com/opral/lix-sdk).
42
+
43
+ > [!NOTE]
44
+ > The getting started uses a JSON file but you can store any file in lix, even a SQLite database, as long as a plugin for the file format is provided.
45
+
46
+ ### Installation
47
+
48
+ Install the Lix SDK package:
49
+
50
+ ```bash
51
+ npm install @lix-js/sdk
52
+ ```
53
+
54
+ ### Open a lix
55
+
56
+ > [!NOTE]
57
+ > We plan to have locally installed plugins in the future with no need to provide them upfront, see [#241](https://github.com/opral/lix-sdk/issues/241).
58
+
59
+ Create and open a new Lix file:
60
+
61
+ ```javascript
62
+ import { newLixFile, openLixInMemory } from "@lix-js/sdk";
63
+ import { plugin as jsonPlugin } from "@lix-js/plugin-json";
64
+
65
+ // Create a new empty Lix file
66
+ const lixFile = await newLixFile();
67
+
68
+ // Open the Lix file in memory
69
+ const lix = await openLixInMemory({
70
+ blob: lixFile,
71
+ providePlugins: [jsonPlugin],
72
+ });
73
+ ```
74
+
75
+ ### Insert files
76
+
77
+ Inserting an examplary JSON file into lix:
78
+
79
+ ```javascript
80
+ const json = {
81
+ name: "Hello World",
82
+ version: "1.0.0",
83
+ settings: {
84
+ enableFeatureX: true,
85
+ maxUsers: 10,
86
+ },
87
+ };
88
+
89
+ // Insert the file
90
+ const file = await lix.db
91
+ .insertInto("file")
92
+ .values({
93
+ path: "/example.json",
94
+ data: new TextEncoder().encode(JSON.stringify(json)),
95
+ })
96
+ .returningAll()
97
+ .executeTakeFirstOrThrow();
98
+
99
+ console.log("JSON file inserted with ID:", file.id);
100
+ ```
101
+
102
+ ### Update Files
103
+
104
+ Let's update our JSON file with some changes:
105
+
106
+ ```diff
107
+ {
108
+ name: "Hello World",
109
+ - version: "1.0.0",
110
+ + version: "1.1.0",
111
+ settings: {
112
+ enableFeatureX: true,
113
+ - maxUsers: 10,
114
+ + maxUsers: 20,
115
+ },
116
+ };
117
+ ```
118
+
119
+ ```javascript
120
+ // updating the json from the previous example
121
+ json["version"] = "1.1.0";
122
+ json["settings"]["maxUsers"] = 20;
123
+
124
+ // Update the file
125
+ await lix.db
126
+ .updateTable("file")
127
+ .set({
128
+ data: new TextEncoder().encode(JSON.stringify(updatedJson)),
129
+ })
130
+ .where("path", "=", "/example.json")
131
+ .execute();
132
+
133
+ ```
134
+
135
+ Lix detect changes in file updates via the [file-queue](https://github.com/opral/monorepo/tree/main/packages/lix-sdk/src/file-queue) and the provided plugin which detects changes.
136
+
137
+ ### Query Changes
138
+
139
+ Now we can query the changes that were made to the JSON file:
5
140
 
6
- Lix is a change control system that runs in the browser and an SDK to build web apps.
141
+ ```javascript
142
+ // Get all changes for this file
143
+ const changes = await lix.db
144
+ .selectFrom("change")
145
+ .where("file_id", "=", file.id)
146
+ .innerJoin("snapshot", "snapshot.id", "change.snapshot_id")
147
+ .execute();
7
148
 
8
- A change control system allows storing, tracking, querying, and reviewing changes in different file formats, e.g., `.xlsx`, `.sqlite`, or `.inlang`. Compared to a version control system, a change control system understands “what” changed in a file, e.g., cell C43 in the financials spreadsheet changed.
149
+ console.log("Changes for the JSON file:", changes);
150
+ ```
9
151
 
10
- ## Community & Support
152
+ ### Create and switch a version
11
153
 
12
- **[🚩 Issues](https://github.com/opral/lix-sdk/issues)** - Bugs end errors you encounter using inlang.
154
+ ```javascript
155
+ const versionB = await createVersion({ lix, name: "B" });
13
156
 
14
- **[💬 Discussions](https://github.com/orgs/opral/discussions)** - Get help, ask questions, request features, and discuss inlang.
157
+ // Create a new version based on the parent version
158
+ await switchVersion({ lix, to: versionB });
15
159
 
16
- **[🗣️ Discord](https://discord.gg/gdMPPWy57R)** - Hanging out with the community.
160
+ console.log("New version created:", versionB.id);
161
+ ```
17
162
 
163
+ ### Querying changes in a specific version
18
164
 
19
- ## Example use cases
165
+ We'll update the JSON again by bumping the version to 1.2.0 with a new maxUsers count of 30:
166
+
167
+ ```diff
168
+ {
169
+ name: "Hello World",
170
+ - version: "1.1.0",
171
+ + version: "1.2.0",
172
+ settings: {
173
+ enableFeatureX: true,
174
+ - maxUsers: 20,
175
+ + maxUsers: 30,
176
+ },
177
+ };
178
+ ```
179
+
180
+ Querying changes in a specific version is simple by using the `changeInVersion()` filter:
181
+
182
+ ```javascript
183
+ import { createChange } from "@lix-js/sdk";
184
+
185
+ const changes = await lix.db
186
+ .selectFrom("change")
187
+ .where("file_id", "=", file.id)
188
+ .where(changeInVersion(versionB))
189
+ .innerJoin("snapshot", "snapshot.id", "change.snapshot_id")
190
+ .execute();
191
+
192
+ console.log(
193
+ `Changes for the JSON file in version ${versionB.name}:`, changes
194
+ );
195
+ ```
196
+
197
+ ### Querying a file
198
+
199
+ The file table is derived from the changes in the current version. Hence, querying the file after updating the json in the previous step will return the updated file:
200
+
201
+ ```ts
202
+ const file = await lix.db
203
+ .selectFrom("file")
204
+ .where("path", "=", "/example.json")
205
+ .selectAll()
206
+ .executeTakeFirstOrThrow();
207
+
208
+ console.log(file)
209
+ ```
210
+
211
+ ```json
212
+ {
213
+ "name": "Hello World",
214
+ "version": "1.2.0",
215
+ "settings": {
216
+ "enableFeatureX": true,
217
+ "maxUsers": 30,
218
+ },
219
+ }
220
+ ```
221
+
222
+ ### Switch Back
223
+
224
+ Switch back to version A and you will see that the changes of version B are not present:
225
+
226
+ ```javascript
227
+ await switchVersion({ lix, to: versionA })
228
+
229
+ console.log("Switched to version: main");
230
+
231
+ // Get the file data in this version
232
+ const originalFile = lix.db
233
+ .selectFrom("file")
234
+ .where("path", "=", "/example.json")
235
+ .selectAll()
236
+ .executeTakeFirstOrThrow();
237
+
238
+ const originalContent = JSON.parse(originalFile.content);
239
+ console.log("Original content in main version:", originalContent);
240
+ ```
241
+
242
+ ```json
243
+ {
244
+ "name": "Hello World",
245
+ "version": "1.1.0",
246
+ "settings": {
247
+ "enableFeatureX": true,
248
+ "maxUsers": 20,
249
+ },
250
+ }
251
+ ```
252
+
253
+ ### Merge Changes
254
+
255
+ Merge changes from version B into version A:
256
+
257
+ ```javascript
258
+ await mergeVersion({lix, sourceVersion: versionB, targetVersion: versionA});
259
+
260
+ // Check the merged state
261
+ const file_after_merge = lix.db
262
+ .selectFrom("file")
263
+ .where("id", "=", file.id)
264
+ .select("data")
265
+ .executeTakeFirstOrThrow();
266
+
267
+ console.log("File state after merge:", JSON.parse(file_after_merge.data));
268
+ ```
269
+
270
+ ```json
271
+ {
272
+ "name": "Hello World",
273
+ "version": "1.2.0",
274
+ "settings": {
275
+ "enableFeatureX": true,
276
+ "maxUsers": 30,
277
+ },
278
+ }
279
+ ```
280
+
281
+ ## Plugins
282
+
283
+ Lix uses plugins to understand and track changes in different file formats. Documentation is work in progress. Find example plugins here:
284
+
285
+ - [JSON Plugin](https://github.com/opral/monorepo/tree/main/packages/lix-plugin-json)
286
+ - [CSV plugin](https://github.com/opral/monorepo/tree/main/packages/lix-plugin-csv)
287
+
288
+ ## Building apps
289
+
290
+ ### Example use cases
20
291
 
21
292
  Apps that revolve around changes are prime use cases to be built on lix. Having an “edit -> review -> automate” workflow is a good indicator for an app that revolves around changes:
22
293
 
@@ -26,43 +297,22 @@ Apps that revolve around changes are prime use cases to be built on lix. Having
26
297
  - spreadsheets (Excel, Google Sheets)
27
298
  - CAD software (Fusion 360, Autodesk)
28
299
  - data science (Jupyter Notebooks)
29
- - dashboards (Analytics, Infrastructure)
300
+ - dashboards (Analytics, Infrastructure)
30
301
 
31
- ## Lix as backend for web apps
302
+ ### Advantages
32
303
 
33
304
  Developing a web app with lix is reduced to providing a user interface that opens and saves a file.
34
305
 
35
- ![Open a file, provide a UI, done](./assets/open_file.png)
306
+ ![Open a file, provide a UI, done](https://cdn.jsdelivr.net/gh/opral/monorepo/packages/lix-sdk/assets/open_file.png)
36
307
 
37
308
  Backend features like auth, permissions, change control, and automations are solved on a file rather than an application-specific level. Lix knows who the actors are (auth), allows actors to conduct changes (permissions), is aware of how data changes over time (change history), can merge changes (collaboration), and uses the knowledge of changes to trigger automations (automation pipelines).
38
309
 
39
- ![Backend features for files](./assets/backend_features_to_files.png)
310
+ ![Backend features for files](https://cdn.jsdelivr.net/gh/opral/monorepo/packages/lix-sdk/assets/backend_features_to_files.png)
40
311
 
41
312
  In contrast, cloud-based apps are substantially more difficult to build because they require:
42
313
 
43
314
  - Auth (could be solved with a backend as a service)
44
315
  - Integrations (no interop between apps)
45
316
  - Ensure data privacy and security
46
- - Scaling complexity of storing all customer data
317
+ - Scaling complexity of storing all customer data
47
318
  - Replicating change control features like history, branching, etc.
48
-
49
- ### Capabilities
50
-
51
- #### Interop
52
-
53
- Lix apps operate on (open) files. Any app can open the files and process the data. The need for integrations that transfer data from cloud app A to cloud app B is redundant. App 1 and app 2 can provide different UIs or services while operating on the same data.
54
-
55
- ![interop](./assets/interop.png)
56
-
57
- #### Collaboration via change proposals
58
-
59
- Lix brings versions and change requests, thereby enabling permissionless collaboration in file formats other than source code. We will see an “open-sourceification” of music, video, architecture, public policy making, fashion, and who knows, maybe even automobiles.
60
-
61
-
62
- ![permissionless collaboration](./assets/permissionless_collaboration.svg)
63
-
64
- #### Automation
65
-
66
- Lix can trigger automations based on changes in files. This is a powerful feature that allows for a new class of apps that are not possible with cloud-based apps.
67
-
68
- ![automation](./assets/fm-automate.svg)
@@ -359,7 +359,7 @@ test("invalid file paths should be rejected", async () => {
359
359
  data: new Uint8Array(),
360
360
  })
361
361
  .returningAll()
362
- .execute()).rejects.toThrowErrorMatchingInlineSnapshot(`[SQLite3Error: SQLITE_ERROR: sqlite3 result code 1: Error: File path must start with a slash.\n\nNot starting a file path with a slash \`/\` leads to ambiguity whether or not the path is a directory or a file.]`);
362
+ .execute()).rejects.toThrowError("File path must start with a slash");
363
363
  });
364
364
  test("vector clock functions", async () => {
365
365
  const sqlite = await createInMemoryDatabase({
@@ -1 +1 @@
1
- {"version":3,"file":"init-db.test.js","sourceRoot":"","sources":["../../src/database/init-db.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init-db.test.js","sourceRoot":"","sources":["../../src/database/init-db.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"nano-id.d.ts","sourceRoot":"","sources":["../../src/database/nano-id.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkDH;;;;;GAKG;AACH,eAAO,MAAM,eAAe,mEACqC,CAAC;AAElE;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,MACR,CAAC"}
1
+ {"version":3,"file":"nano-id.d.ts","sourceRoot":"","sources":["../../src/database/nano-id.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA2EH;;;;;GAKG;AACH,eAAO,MAAM,eAAe,mEACqC,CAAC;AAElE;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,MACR,CAAC"}
@@ -3,7 +3,30 @@
3
3
  * browser implementation. The code is licensed under the MIT license.
4
4
  *
5
5
  */
6
- const random = (bytes) => crypto.getRandomValues(new Uint8Array(bytes));
6
+ /**
7
+ * Polyfill for crypto.getRandomValues in environments that don't have it,
8
+ * such as older versions of Node in Stackblitz.
9
+ *
10
+ * This implementation is not cryptographically secure, but is sufficient for ID generation
11
+ * in these environments. In environments with proper crypto support, we'll use the native implementation.
12
+ *
13
+ * See: https://github.com/opral/lix-sdk/issues/258
14
+ */
15
+ const insecureRandom = (array) => {
16
+ for (let i = 0; i < array.length; i++) {
17
+ array[i] = Math.floor(Math.random() * 256);
18
+ }
19
+ return array;
20
+ };
21
+ // Use crypto.getRandomValues if available, otherwise use our polyfill
22
+ const random = (bytes) => {
23
+ const array = new Uint8Array(bytes);
24
+ if (typeof crypto !== 'undefined' && crypto.getRandomValues) {
25
+ return crypto.getRandomValues(array);
26
+ }
27
+ // Fallback to insecure random number generator if crypto is not available
28
+ return insecureRandom(array);
29
+ };
7
30
  const customRandom = (alphabet, defaultSize, getRandom) => {
8
31
  // First, a bitmask is necessary to generate the ID. The bitmask makes bytes
9
32
  // values closer to the alphabet size. The bitmask calculates the closest
@@ -1 +1 @@
1
- {"version":3,"file":"nano-id.js","sourceRoot":"","sources":["../../src/database/nano-id.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAE7E,MAAM,YAAY,GAAG,CACpB,QAAgB,EAChB,WAAmB,EACnB,SAAc,EACb,EAAE;IACH,4EAA4E;IAC5E,yEAAyE;IACzE,sDAAsD;IACtD,sEAAsE;IACtE,qEAAqE;IACrE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACvD,wEAAwE;IACxE,yEAAyE;IACzE,mDAAmD;IAEnD,uEAAuE;IACvE,sEAAsE;IACtE,8EAA8E;IAE9E,6DAA6D;IAC7D,kEAAkE;IAClE,sEAAsE;IACtE,4BAA4B;IAE5B,wCAAwC;IACxC,oCAAoC;IACpC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,WAAW,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE9D,OAAO,CAAC,IAAI,GAAG,WAAW,EAAE,EAAE;QAC7B,IAAI,EAAE,GAAG,EAAE,CAAC;QACZ,OAAO,IAAI,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAC9B,8DAA8D;YAC9D,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;YACjB,OAAO,CAAC,EAAE,EAAE,CAAC;gBACZ,uEAAuE;gBACvE,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBACtC,IAAI,EAAE,CAAC,MAAM,IAAI,IAAI;oBAAE,OAAO,EAAE,CAAC;YAClC,CAAC;QACF,CAAC;IACF,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,CACtD,YAAY,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAC3B,gEAAgE,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,MAAM,GAClB,cAAc,CAAC,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"nano-id.js","sourceRoot":"","sources":["../../src/database/nano-id.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;GAQG;AACH,MAAM,cAAc,GAAG,CAAC,KAAiB,EAAE,EAAE;IAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,sEAAsE;AACtE,MAAM,MAAM,GAAG,CAAC,KAAU,EAAE,EAAE;IAC5B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC5D,OAAO,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,0EAA0E;IAC1E,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CACpB,QAAgB,EAChB,WAAmB,EACnB,SAAc,EACb,EAAE;IACH,4EAA4E;IAC5E,yEAAyE;IACzE,sDAAsD;IACtD,sEAAsE;IACtE,qEAAqE;IACrE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACvD,wEAAwE;IACxE,yEAAyE;IACzE,mDAAmD;IAEnD,uEAAuE;IACvE,sEAAsE;IACtE,8EAA8E;IAE9E,6DAA6D;IAC7D,kEAAkE;IAClE,sEAAsE;IACtE,4BAA4B;IAE5B,wCAAwC;IACxC,oCAAoC;IACpC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,WAAW,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE9D,OAAO,CAAC,IAAI,GAAG,WAAW,EAAE,EAAE;QAC7B,IAAI,EAAE,GAAG,EAAE,CAAC;QACZ,OAAO,IAAI,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAC9B,8DAA8D;YAC9D,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;YACjB,OAAO,CAAC,EAAE,EAAE,CAAC;gBACZ,uEAAuE;gBACvE,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBACtC,IAAI,EAAE,CAAC,MAAM,IAAI,IAAI;oBAAE,OAAO,EAAE,CAAC;YAClC,CAAC;QACF,CAAC;IACF,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,CACtD,YAAY,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAC3B,gEAAgE,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,MAAM,GAClB,cAAc,CAAC,eAAe,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { expect, test } from "vitest";
1
+ import { expect, test, vi } from "vitest";
2
2
  import { _nanoIdAlphabet, nanoid } from "./nano-id.js";
3
3
  test("length is obeyed", () => {
4
4
  const id = nanoid(10);
@@ -10,4 +10,29 @@ test("the alphabet does not contain underscores `_` because they are not URL saf
10
10
  test("the alphabet does not contain dashes `-` because they break selecting the ID from the URL in the browser", () => {
11
11
  expect(_nanoIdAlphabet).not.toContain("-");
12
12
  });
13
+ /**
14
+ * Test the crypto polyfill that was added to fix environments without crypto support
15
+ * like older versions of Node in Stackblitz.
16
+ *
17
+ * See: https://github.com/opral/lix-sdk/issues/258
18
+ */
19
+ test("polyfill works when crypto is not available", () => {
20
+ // Store original crypto
21
+ const originalCrypto = global.crypto;
22
+ // Mock crypto as undefined to test the polyfill
23
+ vi.stubGlobal("crypto", undefined);
24
+ try {
25
+ const id = nanoid(10);
26
+ expect(id.length).toBe(10);
27
+ expect(typeof id).toBe("string");
28
+ // Check that it only contains characters from our alphabet
29
+ for (let i = 0; i < id.length; i++) {
30
+ expect(_nanoIdAlphabet).toContain(id[i]);
31
+ }
32
+ }
33
+ finally {
34
+ // Restore original crypto
35
+ vi.stubGlobal("crypto", originalCrypto);
36
+ }
37
+ });
13
38
  //# sourceMappingURL=nano-id.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nano-id.test.js","sourceRoot":"","sources":["../../src/database/nano-id.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEvD,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC7B,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IACtB,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6EAA6E,EAAE,GAAG,EAAE;IACxF,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0GAA0G,EAAE,GAAG,EAAE;IACrH,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"nano-id.test.js","sourceRoot":"","sources":["../../src/database/nano-id.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEvD,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC7B,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IACtB,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6EAA6E,EAAE,GAAG,EAAE;IACxF,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0GAA0G,EAAE,GAAG,EAAE;IACrH,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEH;;;;;GAKG;AACH,IAAI,CAAC,6CAA6C,EAAE,GAAG,EAAE;IACxD,wBAAwB;IACxB,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;IAErC,gDAAgD;IAChD,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEnC,IAAI,CAAC;QACJ,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACtB,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,2DAA2D;QAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;IACF,CAAC;YAAS,CAAC;QACV,0BAA0B;QAC1B,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IACzC,CAAC;AACF,CAAC,CAAC,CAAC"}
@@ -14,7 +14,7 @@ export function validateFilePath(path) {
14
14
  throw new Error("File path must not be empty.");
15
15
  }
16
16
  if (path[0] !== "/") {
17
- throw new Error("File path must start with a slash.\n\nNot starting a file path with a slash `/` leads to ambiguity whether or not the path is a directory or a file.");
17
+ throw new Error("File path must start with a slash.\n\nFiles must start with a root slash to identify the path as root.");
18
18
  }
19
19
  // validate middle
20
20
  // validate ending
@@ -1 +1 @@
1
- {"version":3,"file":"validate-file-path.js","sourceRoot":"","sources":["../../src/file/validate-file-path.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC5C,qBAAqB;IAErB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACd,sJAAsJ,CACtJ,CAAC;IACH,CAAC;IAED,kBAAkB;IAElB,kBAAkB;IAElB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACd,yIAAyI,CACzI,CAAC;IACH,CAAC;IAED,mBAAmB;IAEnB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACd,4IAA4I,CAC5I,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACd,6FAA6F,CAC7F,CAAC;IACH,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC3C,IAAI,CAAC;QACJ,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"validate-file-path.js","sourceRoot":"","sources":["../../src/file/validate-file-path.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC5C,qBAAqB;IAErB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACd,wGAAwG,CACxG,CAAC;IACH,CAAC;IAED,kBAAkB;IAElB,kBAAkB;IAElB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACd,yIAAyI,CACzI,CAAC;IACH,CAAC;IAED,mBAAmB;IAEnB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACd,4IAA4I,CAC5I,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACd,6FAA6F,CAC7F,CAAC;IACH,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC3C,IAAI,CAAC;QACJ,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-handlers.d.ts","sourceRoot":"","sources":["../../src/file-queue/file-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AA6B9C,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC5C,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC;IAC3C,cAAc,EAAE,cAAc,CAAC;CAC/B,GAAG,OAAO,CAAC,IAAI,CAAC,CAwFhB;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC5C,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC;IAC3C,cAAc,EAAE,cAAc,CAAC;CAC/B,GAAG,OAAO,CAAC,IAAI,CAAC,CAyFhB;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC5C,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC;IAC3C,cAAc,EAAE,cAAc,CAAC;CAC/B,GAAG,OAAO,CAAC,IAAI,CAAC,CA0ChB"}
1
+ {"version":3,"file":"file-handlers.d.ts","sourceRoot":"","sources":["../../src/file-queue/file-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAsB9C,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC5C,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC;IAC3C,cAAc,EAAE,cAAc,CAAC;CAC/B,GAAG,OAAO,CAAC,IAAI,CAAC,CAyFhB;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC5C,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC;IAC3C,cAAc,EAAE,cAAc,CAAC;CAC/B,GAAG,OAAO,CAAC,IAAI,CAAC,CA0FhB;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC5C,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC;IAC3C,cAAc,EAAE,cAAc,CAAC;CAC/B,GAAG,OAAO,CAAC,IAAI,CAAC,CA0ChB"}
@@ -1,13 +1,6 @@
1
1
  import { sql } from "kysely";
2
2
  import { createChange } from "../change/create-change.js";
3
3
  import { changeIsLeafInVersion } from "../query-filter/change-is-leaf-in-version.js";
4
- // start a new normalize path function that has the absolute minimum implementation.
5
- function normalizePath(path) {
6
- if (!path.startsWith("/")) {
7
- return "/" + path;
8
- }
9
- return path;
10
- }
11
4
  async function glob(args) {
12
5
  const result = await sql `SELECT CASE WHEN ${args.path} GLOB ${args.glob} THEN 1 ELSE 0 END AS matches`.execute(args.lix.db);
13
6
  // Extract the result from the response
@@ -24,12 +17,13 @@ export async function handleFileInsert(args) {
24
17
  throw new Error("Both before and after paths are null");
25
18
  }
26
19
  for (const plugin of plugins) {
27
- // glob expressions are expressed relative without leading / but path has leading /
28
- if (!(await glob({
29
- lix: args.lix,
30
- path: normalizePath(path),
31
- glob: "/" + plugin.detectChangesGlob,
32
- }))) {
20
+ // glob expressions and paths should be properly normalized
21
+ if (!plugin.detectChangesGlob ||
22
+ !(await glob({
23
+ lix: args.lix,
24
+ path,
25
+ glob: plugin.detectChangesGlob,
26
+ }))) {
33
27
  break;
34
28
  }
35
29
  if (plugin.detectChanges === undefined) {
@@ -95,12 +89,13 @@ export async function handleFileUpdate(args) {
95
89
  throw new Error("Both before and after paths are null");
96
90
  }
97
91
  for (const plugin of plugins) {
98
- // glob expressions are expressed relative without leading / but path has leading /
99
- if (!(await glob({
100
- lix: args.lix,
101
- path: normalizePath(path),
102
- glob: "/" + plugin.detectChangesGlob,
103
- }))) {
92
+ // glob expressions and paths should be properly normalized
93
+ if (!plugin.detectChangesGlob ||
94
+ !(await glob({
95
+ lix: args.lix,
96
+ path,
97
+ glob: plugin.detectChangesGlob,
98
+ }))) {
104
99
  break;
105
100
  }
106
101
  if (plugin.detectChanges === undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"file-handlers.js","sourceRoot":"","sources":["../../src/file-queue/file-handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-handlers.js","sourceRoot":"","sources":["../../src/file-queue/file-handlers.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AAGrF,KAAK,UAAU,IAAI,CAAC,IAInB;IACA,MAAM,MAAM,GACX,MAAM,GAAG,CAAA,oBAAoB,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,IAAI,+BAA+B,CAAC,OAAO,CAC9F,IAAI,CAAC,GAAG,CAAC,EAAE,CACX,CAAC;IAEH,uCAAuC;IAEvC,OAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,OAAO,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED,wCAAwC;AACxC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAGtC;IACA,MAAM,eAAe,GAAkD,EAAE,CAAC;IAE1E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IAE/C,mEAAmE;IACnE,iEAAiE;IACjE,MAAM,IAAI,GACT,IAAI,CAAC,cAAc,CAAC,UAAU,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;IAEnE,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,2DAA2D;QAC3D,IACC,CAAC,MAAM,CAAC,iBAAiB;YACzB,CAAC,CAAC,MAAM,IAAI,CAAC;gBACZ,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,IAAI;gBACJ,IAAI,EAAE,MAAM,CAAC,iBAAiB;aAC9B,CAAC,CAAC,EACF,CAAC;YACF,MAAM;QACP,CAAC;QAED,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,IAAI,KAAK,CACtB,yEAAyE,CACzE,CAAC;YACF,4EAA4E;YAC5E,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,MAAM,KAAK,CAAC;QACb,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACvC,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,MAAM,MAAM,CAAC,aAAa,CAAC;YAC/C,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE;gBACN,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO;gBAC/B,IAAI;gBACJ,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc;gBAC5C,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU;aACpC;SACD,CAAC,EAAE,CAAC;YACJ,eAAe,CAAC,IAAI,CAAC;gBACpB,GAAG,MAAM;gBACT,SAAS,EAAE,MAAM,CAAC,GAAG;aACrB,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACrD,MAAM,cAAc,GAAG,MAAM,GAAG;aAC9B,UAAU,CAAC,gBAAgB,CAAC;aAC5B,SAAS,EAAE;aACX,OAAO,EAAE,CAAC;QAEZ,MAAM,cAAc,GAAG,MAAM,GAAG;aAC9B,UAAU,CAAC,iBAAiB,CAAC;aAC7B,SAAS,CAAC,SAAS,EAAE,oBAAoB,EAAE,YAAY,CAAC;aACxD,SAAS,EAAE;aACX,uBAAuB,EAAE,CAAC;QAE5B,MAAM,OAAO,CAAC,GAAG,CAChB,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE;YAC5C,MAAM,YAAY,CAAC;gBAClB,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE;gBAC7B,OAAO,EAAE,cAAc;gBACvB,OAAO,EAAE,cAAc;gBACvB,QAAQ,EAAE,cAAc,CAAC,SAAS;gBAClC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO;gBACnC,SAAS,EAAE,cAAc,CAAC,SAAS;gBACnC,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG;gBACpC,eAAe,EAAE,cAAc,CAAC,QAAQ;aACxC,CAAC,CAAC;QACJ,CAAC,CAAC,CACF,CAAC;QAEF,MAAM,GAAG;aACP,UAAU,CAAC,YAAY,CAAC;aACxB,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;aACxC,OAAO,EAAE,CAAC;IACb,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAGtC;IACA,MAAM,eAAe,GAAkD,EAAE,CAAC;IAE1E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IAE/C,mEAAmE;IACnE,iEAAiE;IACjE,MAAM,IAAI,GACT,IAAI,CAAC,cAAc,CAAC,UAAU,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;IAEnE,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,2DAA2D;QAC3D,IACC,CAAC,MAAM,CAAC,iBAAiB;YACzB,CAAC,CAAC,MAAM,IAAI,CAAC;gBACZ,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,IAAI;gBACJ,IAAI,EAAE,MAAM,CAAC,iBAAiB;aAC9B,CAAC,CAAC,EACF,CAAC;YACF,MAAM;QACP,CAAC;QACD,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,IAAI,KAAK,CACtB,yEAAyE,CACzE,CAAC;YACF,4EAA4E;YAC5E,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,MAAM,KAAK,CAAC;QACb,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,MAAM,MAAM,CAAC,aAAa,CAAC;YAC/C,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW;gBACtC,CAAC,CAAC;oBACA,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO;oBAC/B,IAAI,EAAE,IAAI;oBACV,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe;oBAC7C,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW;iBACrC;gBACF,CAAC,CAAC,SAAS;YACZ,KAAK,EAAE;gBACN,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO;gBAC/B,IAAI;gBACJ,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc;gBAC5C,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,UAAW;aACrC;SACD,CAAC,EAAE,CAAC;YACJ,eAAe,CAAC,IAAI,CAAC;gBACpB,GAAG,MAAM;gBACT,SAAS,EAAE,MAAM,CAAC,GAAG;aACrB,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACrD,MAAM,cAAc,GAAG,MAAM,GAAG;aAC9B,UAAU,CAAC,gBAAgB,CAAC;aAC5B,SAAS,EAAE;aACX,OAAO,EAAE,CAAC;QAEZ,MAAM,cAAc,GAAG,MAAM,GAAG;aAC9B,UAAU,CAAC,iBAAiB,CAAC;aAC7B,SAAS,CAAC,SAAS,EAAE,oBAAoB,EAAE,YAAY,CAAC;aACxD,SAAS,EAAE;aACX,uBAAuB,EAAE,CAAC;QAE5B,MAAM,OAAO,CAAC,GAAG,CAChB,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE;YAC5C,MAAM,YAAY,CAAC;gBAClB,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE;gBAC7B,OAAO,EAAE,cAAc;gBACvB,OAAO,EAAE,cAAc;gBACvB,QAAQ,EAAE,cAAc,CAAC,SAAS;gBAClC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO;gBACnC,SAAS,EAAE,cAAc,CAAC,SAAS;gBACnC,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG;gBACpC,eAAe,EAAE,cAAc,CAAC,QAAQ;aACxC,CAAC,CAAC;QACJ,CAAC,CAAC,CACF,CAAC;QAEF,MAAM,GAAG;aACP,UAAU,CAAC,YAAY,CAAC;aACxB,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;aACxC,OAAO,EAAE,CAAC;IACb,CAAC,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAGtC;IACA,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACrD,MAAM,cAAc,GAAG,MAAM,GAAG;aAC9B,UAAU,CAAC,iBAAiB,CAAC;aAC7B,SAAS,CAAC,SAAS,EAAE,oBAAoB,EAAE,YAAY,CAAC;aACxD,SAAS,EAAE;aACX,uBAAuB,EAAE,CAAC;QAE5B,MAAM,mBAAmB,GAAG,MAAM,GAAG;aACnC,UAAU,CAAC,QAAQ,CAAC;aACpB,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;aAClD,KAAK,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;aAC5C,MAAM,CAAC,WAAW,CAAC;aACnB,MAAM,CAAC,YAAY,CAAC;aACpB,MAAM,CAAC,YAAY,CAAC;aACpB,OAAO,EAAE,CAAC;QAEZ,MAAM,cAAc,GAAG,MAAM,GAAG;aAC9B,UAAU,CAAC,gBAAgB,CAAC;aAC5B,SAAS,EAAE;aACX,OAAO,EAAE,CAAC;QAEZ,MAAM,OAAO,CAAC,GAAG,CAChB,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACxC,MAAM,YAAY,CAAC;gBAClB,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE;gBAC7B,OAAO,EAAE,cAAc;gBACvB,OAAO,EAAE,cAAc;gBACvB,QAAQ,EAAE,MAAM,CAAC,SAAS;gBAC1B,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO;gBACnC,SAAS,EAAE,MAAM,CAAC,UAAU;gBAC5B,SAAS,EAAE,MAAM,CAAC,UAAU;gBAC5B,eAAe,EAAE,IAAI,EAAE,iCAAiC;aACxD,CAAC,CAAC;QACJ,CAAC,CAAC,CACF,CAAC;QAEF,MAAM,GAAG;aACP,UAAU,CAAC,YAAY,CAAC;aACxB,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;aACxC,OAAO,EAAE,CAAC;IACb,CAAC,CAAC,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export const ENV_VARIABLES = {
2
2
  LIX_SDK_POSTHOG_TOKEN: "phc_6492KFrhZMsb2HOZiloRb6R9tJQWZWVVAiebkwfWATT",
3
- LIX_SDK_VERSION: "0.4.1",
3
+ LIX_SDK_VERSION: "0.4.3",
4
4
  };
5
5
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@lix-js/sdk",
3
3
  "type": "module",
4
- "version": "0.4.1",
4
+ "version": "0.4.3",
5
5
  "license": "Apache-2.0",
6
6
  "exports": {
7
7
  ".": "./dist/index.js"
@@ -22,8 +22,8 @@
22
22
  "js-sha256": "^0.11.0",
23
23
  "kysely": "^0.27.4",
24
24
  "uuid": "^10.0.0",
25
- "@lix-js/server-api-schema": "0.1.1",
26
- "sqlite-wasm-kysely": "0.3.0"
25
+ "sqlite-wasm-kysely": "0.3.0",
26
+ "@lix-js/server-api-schema": "0.1.1"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@eslint/js": "^9.12.0",
@@ -441,8 +441,8 @@ test("invalid file paths should be rejected", async () => {
441
441
  })
442
442
  .returningAll()
443
443
  .execute()
444
- ).rejects.toThrowErrorMatchingInlineSnapshot(
445
- `[SQLite3Error: SQLITE_ERROR: sqlite3 result code 1: Error: File path must start with a slash.\n\nNot starting a file path with a slash \`/\` leads to ambiguity whether or not the path is a directory or a file.]`
444
+ ).rejects.toThrowError(
445
+ "File path must start with a slash"
446
446
  );
447
447
  });
448
448
 
@@ -1,4 +1,4 @@
1
- import { expect, test } from "vitest";
1
+ import { expect, test, vi } from "vitest";
2
2
  import { _nanoIdAlphabet, nanoid } from "./nano-id.js";
3
3
 
4
4
  test("length is obeyed", () => {
@@ -13,3 +13,30 @@ test("the alphabet does not contain underscores `_` because they are not URL saf
13
13
  test("the alphabet does not contain dashes `-` because they break selecting the ID from the URL in the browser", () => {
14
14
  expect(_nanoIdAlphabet).not.toContain("-");
15
15
  });
16
+
17
+ /**
18
+ * Test the crypto polyfill that was added to fix environments without crypto support
19
+ * like older versions of Node in Stackblitz.
20
+ *
21
+ * See: https://github.com/opral/lix-sdk/issues/258
22
+ */
23
+ test("polyfill works when crypto is not available", () => {
24
+ // Store original crypto
25
+ const originalCrypto = global.crypto;
26
+
27
+ // Mock crypto as undefined to test the polyfill
28
+ vi.stubGlobal("crypto", undefined);
29
+
30
+ try {
31
+ const id = nanoid(10);
32
+ expect(id.length).toBe(10);
33
+ expect(typeof id).toBe("string");
34
+ // Check that it only contains characters from our alphabet
35
+ for (let i = 0; i < id.length; i++) {
36
+ expect(_nanoIdAlphabet).toContain(id[i]);
37
+ }
38
+ } finally {
39
+ // Restore original crypto
40
+ vi.stubGlobal("crypto", originalCrypto);
41
+ }
42
+ });
@@ -4,7 +4,32 @@
4
4
  *
5
5
  */
6
6
 
7
- const random = (bytes: any) => crypto.getRandomValues(new Uint8Array(bytes));
7
+ /**
8
+ * Polyfill for crypto.getRandomValues in environments that don't have it,
9
+ * such as older versions of Node in Stackblitz.
10
+ *
11
+ * This implementation is not cryptographically secure, but is sufficient for ID generation
12
+ * in these environments. In environments with proper crypto support, we'll use the native implementation.
13
+ *
14
+ * See: https://github.com/opral/lix-sdk/issues/258
15
+ */
16
+ const insecureRandom = (array: Uint8Array) => {
17
+ for (let i = 0; i < array.length; i++) {
18
+ array[i] = Math.floor(Math.random() * 256);
19
+ }
20
+ return array;
21
+ };
22
+
23
+ // Use crypto.getRandomValues if available, otherwise use our polyfill
24
+ const random = (bytes: any) => {
25
+ const array = new Uint8Array(bytes);
26
+ if (typeof crypto !== 'undefined' && crypto.getRandomValues) {
27
+ return crypto.getRandomValues(array);
28
+ }
29
+
30
+ // Fallback to insecure random number generator if crypto is not available
31
+ return insecureRandom(array);
32
+ };
8
33
 
9
34
  const customRandom = (
10
35
  alphabet: string,
@@ -18,7 +18,7 @@ export function validateFilePath(path: string): void {
18
18
 
19
19
  if (path[0] !== "/") {
20
20
  throw new Error(
21
- "File path must start with a slash.\n\nNot starting a file path with a slash `/` leads to ambiguity whether or not the path is a directory or a file."
21
+ "File path must start with a slash.\n\nFiles must start with a root slash to identify the path as root."
22
22
  );
23
23
  }
24
24
 
@@ -5,13 +5,6 @@ import { sql } from "kysely";
5
5
  import { createChange } from "../change/create-change.js";
6
6
  import { changeIsLeafInVersion } from "../query-filter/change-is-leaf-in-version.js";
7
7
 
8
- // start a new normalize path function that has the absolute minimum implementation.
9
- function normalizePath(path: string) {
10
- if (!path.startsWith("/")) {
11
- return "/" + path;
12
- }
13
- return path;
14
- }
15
8
 
16
9
  async function glob(args: {
17
10
  lix: Pick<Lix, "db">;
@@ -47,12 +40,13 @@ export async function handleFileInsert(args: {
47
40
  }
48
41
 
49
42
  for (const plugin of plugins) {
50
- // glob expressions are expressed relative without leading / but path has leading /
43
+ // glob expressions and paths should be properly normalized
51
44
  if (
45
+ !plugin.detectChangesGlob ||
52
46
  !(await glob({
53
47
  lix: args.lix,
54
- path: normalizePath(path),
55
- glob: "/" + plugin.detectChangesGlob,
48
+ path,
49
+ glob: plugin.detectChangesGlob,
56
50
  }))
57
51
  ) {
58
52
  break;
@@ -140,12 +134,13 @@ export async function handleFileUpdate(args: {
140
134
  }
141
135
 
142
136
  for (const plugin of plugins) {
143
- // glob expressions are expressed relative without leading / but path has leading /
137
+ // glob expressions and paths should be properly normalized
144
138
  if (
139
+ !plugin.detectChangesGlob ||
145
140
  !(await glob({
146
141
  lix: args.lix,
147
- path: normalizePath(path),
148
- glob: "/" + plugin.detectChangesGlob,
142
+ path,
143
+ glob: plugin.detectChangesGlob,
149
144
  }))
150
145
  ) {
151
146
  break;