@inlang/sdk 0.36.4 → 2.0.0-beta.2
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 +1 -1
- package/dist/database/initDb.d.ts +7 -0
- package/dist/database/initDb.d.ts.map +1 -0
- package/dist/database/initDb.js +36 -0
- package/dist/database/initDb.js.map +1 -0
- package/dist/database/initDbAndSchema.test.d.ts +2 -0
- package/dist/database/initDbAndSchema.test.d.ts.map +1 -0
- package/dist/database/initDbAndSchema.test.js +110 -0
- package/dist/database/initDbAndSchema.test.js.map +1 -0
- package/dist/database/jsonbPlugin.d.ts +20 -0
- package/dist/database/jsonbPlugin.d.ts.map +1 -0
- package/dist/database/jsonbPlugin.js +183 -0
- package/dist/database/jsonbPlugin.js.map +1 -0
- package/dist/database/jsonbPlugin.test.d.ts +2 -0
- package/dist/database/jsonbPlugin.test.d.ts.map +1 -0
- package/dist/database/jsonbPlugin.test.js +119 -0
- package/dist/database/jsonbPlugin.test.js.map +1 -0
- package/dist/database/schema.d.ts +74 -0
- package/dist/database/schema.d.ts.map +1 -0
- package/dist/database/schema.js +45 -0
- package/dist/database/schema.js.map +1 -0
- package/dist/helper.d.ts +71 -0
- package/dist/helper.d.ts.map +1 -0
- package/dist/helper.js +91 -0
- package/dist/helper.js.map +1 -0
- package/dist/human-id/human-id.d.ts +3 -0
- package/dist/human-id/human-id.d.ts.map +1 -0
- package/dist/human-id/human-id.js +12 -0
- package/dist/human-id/human-id.js.map +1 -0
- package/dist/human-id/words.d.ts.map +1 -0
- package/dist/{storage/human-id → human-id}/words.js +4 -0
- package/dist/human-id/words.js.map +1 -0
- package/dist/human-id/words.test.d.ts.map +1 -0
- package/dist/{storage/human-id → human-id}/words.test.js +4 -0
- package/dist/human-id/words.test.js.map +1 -0
- package/dist/import-export/exportFiles.d.ts +11 -0
- package/dist/import-export/exportFiles.d.ts.map +1 -0
- package/dist/import-export/exportFiles.js +26 -0
- package/dist/import-export/exportFiles.js.map +1 -0
- package/dist/import-export/importFiles.d.ts +13 -0
- package/dist/import-export/importFiles.d.ts.map +1 -0
- package/dist/import-export/importFiles.js +124 -0
- package/dist/import-export/importFiles.js.map +1 -0
- package/dist/import-export/importFiles.test.d.ts +2 -0
- package/dist/import-export/importFiles.test.d.ts.map +1 -0
- package/dist/import-export/importFiles.test.js +179 -0
- package/dist/import-export/importFiles.test.js.map +1 -0
- package/dist/import-export/roundtrip.test.d.ts +2 -0
- package/dist/import-export/roundtrip.test.d.ts.map +1 -0
- package/dist/import-export/roundtrip.test.js +273 -0
- package/dist/import-export/roundtrip.test.js.map +1 -0
- package/dist/import-export/upsertBundleNestedMatchByProperties.d.ts +4 -0
- package/dist/import-export/upsertBundleNestedMatchByProperties.d.ts.map +1 -0
- package/dist/import-export/upsertBundleNestedMatchByProperties.js +58 -0
- package/dist/import-export/upsertBundleNestedMatchByProperties.js.map +1 -0
- package/dist/index.d.ts +21 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -17
- package/dist/index.js.map +1 -0
- package/dist/json-schema/old-v1-message/fromMessageV1.d.ts +9 -0
- package/dist/json-schema/old-v1-message/fromMessageV1.d.ts.map +1 -0
- package/dist/json-schema/old-v1-message/fromMessageV1.js +84 -0
- package/dist/json-schema/old-v1-message/fromMessageV1.js.map +1 -0
- package/dist/json-schema/old-v1-message/fromMessageV1.test.d.ts +2 -0
- package/dist/json-schema/old-v1-message/fromMessageV1.test.d.ts.map +1 -0
- package/dist/json-schema/old-v1-message/fromMessageV1.test.js +85 -0
- package/dist/json-schema/old-v1-message/fromMessageV1.test.js.map +1 -0
- package/dist/json-schema/old-v1-message/schemaV1.d.ts +86 -0
- package/dist/json-schema/old-v1-message/schemaV1.d.ts.map +1 -0
- package/dist/json-schema/old-v1-message/schemaV1.js +35 -0
- package/dist/json-schema/old-v1-message/schemaV1.js.map +1 -0
- package/dist/json-schema/old-v1-message/toMessageV1.d.ts +9 -0
- package/dist/json-schema/old-v1-message/toMessageV1.d.ts.map +1 -0
- package/dist/json-schema/old-v1-message/toMessageV1.js +67 -0
- package/dist/json-schema/old-v1-message/toMessageV1.js.map +1 -0
- package/dist/json-schema/old-v1-message/toMessageV1.test.d.ts +2 -0
- package/dist/json-schema/old-v1-message/toMessageV1.test.d.ts.map +1 -0
- package/dist/json-schema/old-v1-message/toMessageV1.test.js +85 -0
- package/dist/json-schema/old-v1-message/toMessageV1.test.js.map +1 -0
- package/dist/json-schema/pattern.d.ts +190 -0
- package/dist/json-schema/pattern.d.ts.map +1 -0
- package/dist/json-schema/pattern.js +43 -0
- package/dist/json-schema/pattern.js.map +1 -0
- package/dist/json-schema/settings.d.ts +31 -0
- package/dist/json-schema/settings.d.ts.map +1 -0
- package/dist/json-schema/settings.js +96 -0
- package/dist/json-schema/settings.js.map +1 -0
- package/dist/json-schema/settings.test-d.d.ts +2 -0
- package/dist/json-schema/settings.test-d.d.ts.map +1 -0
- package/dist/json-schema/settings.test-d.js +20 -0
- package/dist/json-schema/settings.test-d.js.map +1 -0
- package/dist/lix-plugin/applyChanges.d.ts +3 -0
- package/dist/lix-plugin/applyChanges.d.ts.map +1 -0
- package/dist/lix-plugin/applyChanges.js +127 -0
- package/dist/lix-plugin/applyChanges.js.map +1 -0
- package/dist/lix-plugin/applyChanges.test.d.ts +2 -0
- package/dist/lix-plugin/applyChanges.test.d.ts.map +1 -0
- package/dist/lix-plugin/applyChanges.test.js +135 -0
- package/dist/lix-plugin/applyChanges.test.js.map +1 -0
- package/dist/lix-plugin/detectConflicts.d.ts +3 -0
- package/dist/lix-plugin/detectConflicts.d.ts.map +1 -0
- package/dist/lix-plugin/detectConflicts.js +47 -0
- package/dist/lix-plugin/detectConflicts.js.map +1 -0
- package/dist/lix-plugin/detectConflicts.test.d.ts +2 -0
- package/dist/lix-plugin/detectConflicts.test.d.ts.map +1 -0
- package/dist/lix-plugin/detectConflicts.test.js +251 -0
- package/dist/lix-plugin/detectConflicts.test.js.map +1 -0
- package/dist/lix-plugin/inlangLixPluginV1.d.ts +8 -0
- package/dist/lix-plugin/inlangLixPluginV1.d.ts.map +1 -0
- package/dist/lix-plugin/inlangLixPluginV1.js +109 -0
- package/dist/lix-plugin/inlangLixPluginV1.js.map +1 -0
- package/dist/lix-plugin/inlangLixPluginV1.test.d.ts +2 -0
- package/dist/lix-plugin/inlangLixPluginV1.test.d.ts.map +1 -0
- package/dist/lix-plugin/inlangLixPluginV1.test.js +418 -0
- package/dist/lix-plugin/inlangLixPluginV1.test.js.map +1 -0
- package/dist/lix-plugin/merge.test.d.ts +2 -0
- package/dist/lix-plugin/merge.test.d.ts.map +1 -0
- package/dist/lix-plugin/merge.test.js +120 -0
- package/dist/lix-plugin/merge.test.js.map +1 -0
- package/dist/lix-plugin/resolveConflictBySelecting.test.d.ts +2 -0
- package/dist/lix-plugin/resolveConflictBySelecting.test.d.ts.map +1 -0
- package/dist/lix-plugin/resolveConflictBySelecting.test.js +176 -0
- package/dist/lix-plugin/resolveConflictBySelecting.test.js.map +1 -0
- package/dist/migrations/v2/createMessageV1.d.ts +28 -0
- package/dist/migrations/v2/createMessageV1.d.ts.map +1 -0
- package/dist/migrations/v2/createMessageV1.js +31 -0
- package/dist/migrations/v2/createMessageV1.js.map +1 -0
- package/dist/migrations/v2/withLanguageTagToLocaleMigration.d.ts +9 -0
- package/dist/migrations/v2/withLanguageTagToLocaleMigration.d.ts.map +1 -0
- package/dist/migrations/v2/withLanguageTagToLocaleMigration.js +31 -0
- package/dist/migrations/v2/withLanguageTagToLocaleMigration.js.map +1 -0
- package/dist/migrations/v2/withLanguageTagToLocaleMigration.test.d.ts +2 -0
- package/dist/migrations/v2/withLanguageTagToLocaleMigration.test.d.ts.map +1 -0
- package/dist/migrations/v2/withLanguageTagToLocaleMigration.test.js +45 -0
- package/dist/migrations/v2/withLanguageTagToLocaleMigration.test.js.map +1 -0
- package/dist/plugin/cache.d.ts +6 -0
- package/dist/plugin/cache.d.ts.map +1 -0
- package/dist/plugin/cache.js +59 -0
- package/dist/plugin/cache.js.map +1 -0
- package/dist/plugin/cache.test.d.ts +2 -0
- package/dist/plugin/cache.test.d.ts.map +1 -0
- package/dist/plugin/cache.test.js +61 -0
- package/dist/plugin/cache.test.js.map +1 -0
- package/dist/plugin/errors.d.ts +41 -0
- package/dist/plugin/errors.d.ts.map +1 -0
- package/dist/plugin/errors.js +48 -0
- package/dist/plugin/errors.js.map +1 -0
- package/dist/plugin/importPlugins.d.ts +19 -0
- package/dist/plugin/importPlugins.d.ts.map +1 -0
- package/dist/plugin/importPlugins.js +43 -0
- package/dist/plugin/importPlugins.js.map +1 -0
- package/dist/plugin/importPlugins.test.d.ts +2 -0
- package/dist/plugin/importPlugins.test.d.ts.map +1 -0
- package/dist/plugin/importPlugins.test.js +95 -0
- package/dist/plugin/importPlugins.test.js.map +1 -0
- package/dist/plugin/meta/ideExtension.d.ts +54 -0
- package/dist/plugin/meta/ideExtension.d.ts.map +1 -0
- package/dist/plugin/meta/ideExtension.js +5 -0
- package/dist/plugin/meta/ideExtension.js.map +1 -0
- package/dist/plugin/schema.d.ts +152 -0
- package/dist/plugin/schema.d.ts.map +1 -0
- package/dist/plugin/schema.js +5 -0
- package/dist/plugin/schema.js.map +1 -0
- package/dist/project/api.d.ts +74 -0
- package/dist/project/api.d.ts.map +1 -0
- package/dist/project/api.js +5 -0
- package/dist/project/api.js.map +1 -0
- package/dist/project/initHandleSaveToLixOnChange.d.ts +14 -0
- package/dist/project/initHandleSaveToLixOnChange.d.ts.map +1 -0
- package/dist/project/initHandleSaveToLixOnChange.js +87 -0
- package/dist/project/initHandleSaveToLixOnChange.js.map +1 -0
- package/dist/project/loadProject.d.ts +53 -0
- package/dist/project/loadProject.d.ts.map +1 -0
- package/dist/project/loadProject.js +168 -0
- package/dist/project/loadProject.js.map +1 -0
- package/dist/project/loadProject.test.d.ts.map +1 -0
- package/dist/project/loadProject.test.js +146 -0
- package/dist/project/loadProject.test.js.map +1 -0
- package/dist/project/loadProjectFromDirectory.d.ts +77 -0
- package/dist/project/loadProjectFromDirectory.d.ts.map +1 -0
- package/dist/project/loadProjectFromDirectory.js +584 -0
- package/dist/project/loadProjectFromDirectory.js.map +1 -0
- package/dist/project/loadProjectFromDirectory.test.d.ts +2 -0
- package/dist/project/loadProjectFromDirectory.test.d.ts.map +1 -0
- package/dist/project/loadProjectFromDirectory.test.js +663 -0
- package/dist/project/loadProjectFromDirectory.test.js.map +1 -0
- package/dist/project/loadProjectInMemory.d.ts +8 -0
- package/dist/project/loadProjectInMemory.d.ts.map +1 -0
- package/dist/project/loadProjectInMemory.js +32 -0
- package/dist/project/loadProjectInMemory.js.map +1 -0
- package/dist/project/loadProjectInMemory.test.d.ts +2 -0
- package/dist/project/loadProjectInMemory.test.d.ts.map +1 -0
- package/dist/project/loadProjectInMemory.test.js +27 -0
- package/dist/project/loadProjectInMemory.test.js.map +1 -0
- package/dist/project/maybeCaptureTelemetry.d.ts +15 -0
- package/dist/project/maybeCaptureTelemetry.d.ts.map +1 -0
- package/dist/project/maybeCaptureTelemetry.js +58 -0
- package/dist/project/maybeCaptureTelemetry.js.map +1 -0
- package/dist/project/maybeCaptureTelemetry.test.d.ts +2 -0
- package/dist/project/maybeCaptureTelemetry.test.d.ts.map +1 -0
- package/dist/project/maybeCaptureTelemetry.test.js +71 -0
- package/dist/project/maybeCaptureTelemetry.test.js.map +1 -0
- package/dist/project/newProject.d.ts +17 -0
- package/dist/project/newProject.d.ts.map +1 -0
- package/dist/project/newProject.js +71 -0
- package/dist/project/newProject.js.map +1 -0
- package/dist/project/newProject.test.d.ts +2 -0
- package/dist/project/newProject.test.d.ts.map +1 -0
- package/dist/project/newProject.test.js +37 -0
- package/dist/project/newProject.test.js.map +1 -0
- package/dist/project/saveProjectToDirectory.d.ts +8 -0
- package/dist/project/saveProjectToDirectory.d.ts.map +1 -0
- package/dist/project/saveProjectToDirectory.js +86 -0
- package/dist/project/saveProjectToDirectory.js.map +1 -0
- package/dist/project/saveProjectToDirectory.test.d.ts +2 -0
- package/dist/project/saveProjectToDirectory.test.d.ts.map +1 -0
- package/dist/project/saveProjectToDirectory.test.js +245 -0
- package/dist/project/saveProjectToDirectory.test.js.map +1 -0
- package/dist/project/state/id$.d.ts +6 -0
- package/dist/project/state/id$.d.ts.map +1 -0
- package/dist/project/state/id$.js +19 -0
- package/dist/project/state/id$.js.map +1 -0
- package/dist/project/state/id$.test.d.ts +2 -0
- package/dist/project/state/id$.test.d.ts.map +1 -0
- package/dist/project/state/id$.test.js +36 -0
- package/dist/project/state/id$.test.js.map +1 -0
- package/dist/project/state/setSettings.d.ts +7 -0
- package/dist/project/state/setSettings.d.ts.map +1 -0
- package/dist/project/state/setSettings.js +16 -0
- package/dist/project/state/setSettings.js.map +1 -0
- package/dist/project/state/setSettings.test.d.ts +2 -0
- package/dist/project/state/setSettings.test.d.ts.map +1 -0
- package/dist/project/state/setSettings.test.js +58 -0
- package/dist/project/state/setSettings.test.js.map +1 -0
- package/dist/project/state/settings$.d.ts +7 -0
- package/dist/project/state/settings$.d.ts.map +1 -0
- package/dist/project/state/settings$.js +21 -0
- package/dist/project/state/settings$.js.map +1 -0
- package/dist/project/state/settings$.test.d.ts +2 -0
- package/dist/project/state/settings$.test.d.ts.map +1 -0
- package/dist/project/state/settings$.test.js +51 -0
- package/dist/project/state/settings$.test.js.map +1 -0
- package/dist/project/state/state.d.ts +58 -0
- package/dist/project/state/state.d.ts.map +1 -0
- package/dist/project/state/state.js +67 -0
- package/dist/project/state/state.js.map +1 -0
- package/dist/project/state/state.test.d.ts +2 -0
- package/dist/project/state/state.test.d.ts.map +1 -0
- package/dist/project/state/state.test.js +103 -0
- package/dist/project/state/state.test.js.map +1 -0
- package/dist/query-utilities/index.d.ts +5 -0
- package/dist/query-utilities/index.d.ts.map +1 -0
- package/dist/query-utilities/index.js +8 -0
- package/dist/query-utilities/index.js.map +1 -0
- package/dist/query-utilities/insertBundleNested.d.ts +4 -0
- package/dist/query-utilities/insertBundleNested.d.ts.map +1 -0
- package/dist/query-utilities/insertBundleNested.js +39 -0
- package/dist/query-utilities/insertBundleNested.js.map +1 -0
- package/dist/query-utilities/pollQuery.d.ts +14 -0
- package/dist/query-utilities/pollQuery.d.ts.map +1 -0
- package/dist/query-utilities/pollQuery.js +22 -0
- package/dist/query-utilities/pollQuery.js.map +1 -0
- package/dist/query-utilities/pollQuery.test.d.ts +2 -0
- package/dist/query-utilities/pollQuery.test.d.ts.map +1 -0
- package/dist/query-utilities/pollQuery.test.js +67 -0
- package/dist/query-utilities/pollQuery.test.js.map +1 -0
- package/dist/query-utilities/selectBundleNested.d.ts +107 -0
- package/dist/query-utilities/selectBundleNested.d.ts.map +1 -0
- package/dist/query-utilities/selectBundleNested.js +43 -0
- package/dist/query-utilities/selectBundleNested.js.map +1 -0
- package/dist/query-utilities/updateBundleNested.d.ts +12 -0
- package/dist/query-utilities/updateBundleNested.d.ts.map +1 -0
- package/dist/query-utilities/updateBundleNested.js +25 -0
- package/dist/query-utilities/updateBundleNested.js.map +1 -0
- package/dist/query-utilities/upsertBundleNested.d.ts +4 -0
- package/dist/query-utilities/upsertBundleNested.d.ts.map +1 -0
- package/dist/query-utilities/upsertBundleNested.js +50 -0
- package/dist/query-utilities/upsertBundleNested.js.map +1 -0
- package/dist/services/env-variables/index.d.ts +6 -0
- package/dist/services/env-variables/index.d.ts.map +1 -0
- package/dist/services/env-variables/index.js +9 -0
- package/dist/services/env-variables/index.js.map +1 -0
- package/dist/services/error-reporting/index.d.ts +15 -0
- package/dist/services/error-reporting/index.d.ts.map +1 -0
- package/dist/services/error-reporting/index.js +30 -0
- package/dist/services/error-reporting/index.js.map +1 -0
- package/dist/{telemetry → services/telemetry}/capture.d.ts +5 -2
- package/dist/services/telemetry/capture.d.ts.map +1 -0
- package/dist/services/telemetry/capture.js +76 -0
- package/dist/services/telemetry/capture.js.map +1 -0
- package/dist/services/telemetry/capture.test.d.ts +2 -0
- package/dist/services/telemetry/capture.test.d.ts.map +1 -0
- package/dist/services/telemetry/capture.test.js +46 -0
- package/dist/services/telemetry/capture.test.js.map +1 -0
- package/dist/utilities/detectJsonFormatting.d.ts +11 -0
- package/dist/utilities/detectJsonFormatting.d.ts.map +1 -0
- package/dist/utilities/detectJsonFormatting.js +83 -0
- package/dist/utilities/detectJsonFormatting.js.map +1 -0
- package/dist/utilities/detectJsonFormatting.test.d.ts +2 -0
- package/dist/utilities/detectJsonFormatting.test.d.ts.map +1 -0
- package/dist/utilities/detectJsonFormatting.test.js +33 -0
- package/dist/utilities/detectJsonFormatting.test.js.map +1 -0
- package/package.json +32 -40
- package/src/database/initDb.ts +34 -0
- package/src/database/initDbAndSchema.test.ts +125 -0
- package/src/database/jsonbPlugin.test.ts +154 -0
- package/src/database/jsonbPlugin.ts +215 -0
- package/src/database/schema.ts +127 -0
- package/src/helper.ts +113 -0
- package/src/human-id/human-id.ts +14 -0
- package/src/{storage/human-id → human-id}/words.test.ts +14 -14
- package/src/{storage/human-id → human-id}/words.ts +4 -4
- package/src/import-export/exportFiles.ts +36 -0
- package/src/import-export/importFiles.test.ts +211 -0
- package/src/import-export/importFiles.ts +142 -0
- package/src/import-export/roundtrip.test.ts +313 -0
- package/src/import-export/upsertBundleNestedMatchByProperties.ts +74 -0
- package/src/index.ts +29 -37
- package/src/json-schema/old-v1-message/README.md +1 -0
- package/src/json-schema/old-v1-message/fromMessageV1.test.ts +87 -0
- package/src/json-schema/old-v1-message/fromMessageV1.ts +99 -0
- package/src/json-schema/old-v1-message/schemaV1.ts +66 -0
- package/src/json-schema/old-v1-message/toMessageV1.test.ts +87 -0
- package/src/json-schema/old-v1-message/toMessageV1.ts +79 -0
- package/src/json-schema/pattern.ts +59 -0
- package/src/json-schema/settings.test-d.ts +21 -0
- package/src/json-schema/settings.ts +138 -0
- package/src/lix-plugin/applyChanges.test.ts +150 -0
- package/src/lix-plugin/applyChanges.ts +171 -0
- package/src/lix-plugin/detectConflicts.test.ts +286 -0
- package/src/lix-plugin/detectConflicts.ts +62 -0
- package/src/lix-plugin/inlangLixPluginV1.test.ts +439 -0
- package/src/lix-plugin/inlangLixPluginV1.ts +132 -0
- package/src/lix-plugin/merge.test.ts +133 -0
- package/src/lix-plugin/resolveConflictBySelecting.test.ts +188 -0
- package/src/migrations/v2/createMessageV1.ts +37 -0
- package/src/migrations/v2/withLanguageTagToLocaleMigration.test.ts +51 -0
- package/src/migrations/v2/withLanguageTagToLocaleMigration.ts +31 -0
- package/src/plugin/cache.test.ts +83 -0
- package/src/plugin/cache.ts +79 -0
- package/src/plugin/errors.ts +67 -0
- package/src/plugin/importPlugins.test.ts +107 -0
- package/src/plugin/importPlugins.ts +60 -0
- package/src/plugin/meta/ideExtension.ts +56 -0
- package/src/plugin/schema.ts +165 -0
- package/src/project/api.ts +77 -0
- package/src/project/initHandleSaveToLixOnChange.ts +93 -0
- package/src/project/loadProject.test.ts +176 -0
- package/src/project/loadProject.ts +246 -0
- package/src/project/loadProjectFromDirectory.test.ts +854 -0
- package/src/project/loadProjectFromDirectory.ts +752 -0
- package/src/project/loadProjectInMemory.test.ts +29 -0
- package/src/project/loadProjectInMemory.ts +36 -0
- package/src/project/maybeCaptureTelemetry.test.ts +79 -0
- package/src/project/maybeCaptureTelemetry.ts +69 -0
- package/src/project/newProject.test.ts +36 -0
- package/src/project/newProject.ts +78 -0
- package/src/project/saveProjectToDirectory.test.ts +310 -0
- package/src/project/saveProjectToDirectory.ts +100 -0
- package/src/query-utilities/index.ts +4 -0
- package/src/query-utilities/insertBundleNested.ts +46 -0
- package/src/query-utilities/selectBundleNested.ts +46 -0
- package/src/query-utilities/updateBundleNested.ts +35 -0
- package/src/query-utilities/upsertBundleNested.ts +61 -0
- package/src/services/env-variables/createIndexFile.js +40 -0
- package/src/{env-variables → services/env-variables}/index.d.ts +8 -5
- package/src/services/error-reporting/index.ts +28 -0
- package/src/services/telemetry/capture.test.ts +50 -0
- package/src/services/telemetry/capture.ts +99 -0
- package/src/utilities/detectJsonFormatting.test.ts +38 -0
- package/src/utilities/detectJsonFormatting.ts +109 -0
- package/dist/adapter/solidAdapter.d.ts +0 -33
- package/dist/adapter/solidAdapter.d.ts.map +0 -1
- package/dist/adapter/solidAdapter.js +0 -40
- package/dist/adapter/solidAdapter.test.d.ts +0 -2
- package/dist/adapter/solidAdapter.test.d.ts.map +0 -1
- package/dist/adapter/solidAdapter.test.js +0 -356
- package/dist/api.d.ts +0 -113
- package/dist/api.d.ts.map +0 -1
- package/dist/api.js +0 -1
- package/dist/api.test-d.d.ts +0 -2
- package/dist/api.test-d.d.ts.map +0 -1
- package/dist/api.test-d.js +0 -4
- package/dist/createMessageLintReportsQuery.d.ts +0 -12
- package/dist/createMessageLintReportsQuery.d.ts.map +0 -1
- package/dist/createMessageLintReportsQuery.js +0 -176
- package/dist/createMessagesQuery.d.ts +0 -19
- package/dist/createMessagesQuery.d.ts.map +0 -1
- package/dist/createMessagesQuery.js +0 -451
- package/dist/createMessagesQuery.test.d.ts +0 -2
- package/dist/createMessagesQuery.test.d.ts.map +0 -1
- package/dist/createMessagesQuery.test.js +0 -402
- package/dist/createNewProject.d.ts +0 -12
- package/dist/createNewProject.d.ts.map +0 -1
- package/dist/createNewProject.js +0 -38
- package/dist/createNewProject.test.d.ts +0 -2
- package/dist/createNewProject.test.d.ts.map +0 -1
- package/dist/createNewProject.test.js +0 -91
- package/dist/createNodeishFsWithAbsolutePaths.d.ts +0 -12
- package/dist/createNodeishFsWithAbsolutePaths.d.ts.map +0 -1
- package/dist/createNodeishFsWithAbsolutePaths.js +0 -38
- package/dist/createNodeishFsWithAbsolutePaths.test.d.ts +0 -2
- package/dist/createNodeishFsWithAbsolutePaths.test.d.ts.map +0 -1
- package/dist/createNodeishFsWithAbsolutePaths.test.js +0 -44
- package/dist/createNodeishFsWithWatcher.d.ts +0 -14
- package/dist/createNodeishFsWithWatcher.d.ts.map +0 -1
- package/dist/createNodeishFsWithWatcher.js +0 -75
- package/dist/createNodeishFsWithWatcher.test.d.ts +0 -2
- package/dist/createNodeishFsWithWatcher.test.d.ts.map +0 -1
- package/dist/createNodeishFsWithWatcher.test.js +0 -38
- package/dist/defaultProjectSettings.d.ts +0 -14
- package/dist/defaultProjectSettings.d.ts.map +0 -1
- package/dist/defaultProjectSettings.js +0 -22
- package/dist/env-variables/index.d.ts +0 -4
- package/dist/env-variables/index.d.ts.map +0 -1
- package/dist/env-variables/index.js +0 -3
- package/dist/errors.d.ts +0 -48
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -62
- package/dist/lint/index.d.ts +0 -3
- package/dist/lint/index.d.ts.map +0 -1
- package/dist/lint/index.js +0 -2
- package/dist/lint/message/errors.d.ts +0 -7
- package/dist/lint/message/errors.d.ts.map +0 -1
- package/dist/lint/message/errors.js +0 -9
- package/dist/lint/message/lintMessages.d.ts +0 -13
- package/dist/lint/message/lintMessages.d.ts.map +0 -1
- package/dist/lint/message/lintMessages.js +0 -12
- package/dist/lint/message/lintMessages.test.d.ts +0 -2
- package/dist/lint/message/lintMessages.test.d.ts.map +0 -1
- package/dist/lint/message/lintMessages.test.js +0 -107
- package/dist/lint/message/lintSingleMessage.d.ts +0 -19
- package/dist/lint/message/lintSingleMessage.d.ts.map +0 -1
- package/dist/lint/message/lintSingleMessage.js +0 -38
- package/dist/lint/message/lintSingleMessage.test.d.ts +0 -2
- package/dist/lint/message/lintSingleMessage.test.d.ts.map +0 -1
- package/dist/lint/message/lintSingleMessage.test.js +0 -161
- package/dist/listProjects.d.ts +0 -5
- package/dist/listProjects.d.ts.map +0 -1
- package/dist/listProjects.js +0 -38
- package/dist/listProjects.test.d.ts +0 -2
- package/dist/listProjects.test.d.ts.map +0 -1
- package/dist/listProjects.test.js +0 -72
- package/dist/loadProject.d.ts +0 -19
- package/dist/loadProject.d.ts.map +0 -1
- package/dist/loadProject.js +0 -343
- package/dist/loadProject.test.d.ts.map +0 -1
- package/dist/loadProject.test.js +0 -975
- package/dist/messages/errors.d.ts +0 -13
- package/dist/messages/errors.d.ts.map +0 -1
- package/dist/messages/errors.js +0 -18
- package/dist/messages/index.d.ts +0 -3
- package/dist/messages/index.d.ts.map +0 -1
- package/dist/messages/index.js +0 -2
- package/dist/messages/variant.d.ts +0 -46
- package/dist/messages/variant.d.ts.map +0 -1
- package/dist/messages/variant.js +0 -176
- package/dist/messages/variant.test.d.ts +0 -2
- package/dist/messages/variant.test.d.ts.map +0 -1
- package/dist/messages/variant.test.js +0 -439
- package/dist/migrations/maybeAddModuleCache.d.ts +0 -6
- package/dist/migrations/maybeAddModuleCache.d.ts.map +0 -1
- package/dist/migrations/maybeAddModuleCache.js +0 -62
- package/dist/migrations/maybeCreateFirstProjectId.d.ts +0 -16
- package/dist/migrations/maybeCreateFirstProjectId.d.ts.map +0 -1
- package/dist/migrations/maybeCreateFirstProjectId.js +0 -46
- package/dist/migrations/maybeCreateFirstProjectId.test.d.ts +0 -2
- package/dist/migrations/maybeCreateFirstProjectId.test.d.ts.map +0 -1
- package/dist/migrations/maybeCreateFirstProjectId.test.js +0 -24
- package/dist/migrations/migrateToDirectory.d.ts +0 -10
- package/dist/migrations/migrateToDirectory.d.ts.map +0 -1
- package/dist/migrations/migrateToDirectory.js +0 -48
- package/dist/migrations/migrateToDirectory.test.d.ts +0 -2
- package/dist/migrations/migrateToDirectory.test.d.ts.map +0 -1
- package/dist/migrations/migrateToDirectory.test.js +0 -48
- package/dist/parseConfig.d.ts +0 -8
- package/dist/parseConfig.d.ts.map +0 -1
- package/dist/parseConfig.js +0 -26
- package/dist/persistence/batchedIO.d.ts +0 -11
- package/dist/persistence/batchedIO.d.ts.map +0 -1
- package/dist/persistence/batchedIO.js +0 -49
- package/dist/persistence/batchedIO.test.d.ts +0 -2
- package/dist/persistence/batchedIO.test.d.ts.map +0 -1
- package/dist/persistence/batchedIO.test.js +0 -56
- package/dist/persistence/filelock/acquireFileLock.d.ts +0 -3
- package/dist/persistence/filelock/acquireFileLock.d.ts.map +0 -1
- package/dist/persistence/filelock/acquireFileLock.js +0 -111
- package/dist/persistence/filelock/releaseLock.d.ts +0 -3
- package/dist/persistence/filelock/releaseLock.d.ts.map +0 -1
- package/dist/persistence/filelock/releaseLock.js +0 -24
- package/dist/persistence/store.d.ts +0 -107
- package/dist/persistence/store.d.ts.map +0 -1
- package/dist/persistence/store.js +0 -99
- package/dist/persistence/store.test.d.ts +0 -2
- package/dist/persistence/store.test.d.ts.map +0 -1
- package/dist/persistence/store.test.js +0 -79
- package/dist/persistence/storeApi.d.ts +0 -22
- package/dist/persistence/storeApi.d.ts.map +0 -1
- package/dist/persistence/storeApi.js +0 -1
- package/dist/reactivity/map.d.ts +0 -67
- package/dist/reactivity/map.d.ts.map +0 -1
- package/dist/reactivity/map.js +0 -143
- package/dist/reactivity/solid.d.ts +0 -14
- package/dist/reactivity/solid.d.ts.map +0 -1
- package/dist/reactivity/solid.js +0 -15
- package/dist/reactivity/solid.test.d.ts +0 -2
- package/dist/reactivity/solid.test.d.ts.map +0 -1
- package/dist/reactivity/solid.test.js +0 -189
- package/dist/reactivity/trigger.d.ts +0 -11
- package/dist/reactivity/trigger.d.ts.map +0 -1
- package/dist/reactivity/trigger.js +0 -46
- package/dist/resolve-modules/cache.d.ts +0 -6
- package/dist/resolve-modules/cache.d.ts.map +0 -1
- package/dist/resolve-modules/cache.js +0 -58
- package/dist/resolve-modules/errors.d.ts +0 -41
- package/dist/resolve-modules/errors.d.ts.map +0 -1
- package/dist/resolve-modules/errors.js +0 -45
- package/dist/resolve-modules/import.d.ts +0 -19
- package/dist/resolve-modules/import.d.ts.map +0 -1
- package/dist/resolve-modules/import.js +0 -102
- package/dist/resolve-modules/import.test.d.ts +0 -2
- package/dist/resolve-modules/import.test.d.ts.map +0 -1
- package/dist/resolve-modules/import.test.js +0 -47
- package/dist/resolve-modules/index.d.ts +0 -3
- package/dist/resolve-modules/index.d.ts.map +0 -1
- package/dist/resolve-modules/index.js +0 -2
- package/dist/resolve-modules/message-lint-rules/errors.d.ts +0 -9
- package/dist/resolve-modules/message-lint-rules/errors.d.ts.map +0 -1
- package/dist/resolve-modules/message-lint-rules/errors.js +0 -6
- package/dist/resolve-modules/message-lint-rules/resolveMessageLintRules.d.ts +0 -9
- package/dist/resolve-modules/message-lint-rules/resolveMessageLintRules.d.ts.map +0 -1
- package/dist/resolve-modules/message-lint-rules/resolveMessageLintRules.js +0 -24
- package/dist/resolve-modules/plugins/errors.d.ts +0 -33
- package/dist/resolve-modules/plugins/errors.d.ts.map +0 -1
- package/dist/resolve-modules/plugins/errors.js +0 -38
- package/dist/resolve-modules/plugins/resolvePlugins.d.ts +0 -3
- package/dist/resolve-modules/plugins/resolvePlugins.d.ts.map +0 -1
- package/dist/resolve-modules/plugins/resolvePlugins.js +0 -92
- package/dist/resolve-modules/plugins/resolvePlugins.test.d.ts +0 -2
- package/dist/resolve-modules/plugins/resolvePlugins.test.d.ts.map +0 -1
- package/dist/resolve-modules/plugins/resolvePlugins.test.js +0 -252
- package/dist/resolve-modules/plugins/types.d.ts +0 -57
- package/dist/resolve-modules/plugins/types.d.ts.map +0 -1
- package/dist/resolve-modules/plugins/types.js +0 -1
- package/dist/resolve-modules/plugins/types.test.d.ts +0 -2
- package/dist/resolve-modules/plugins/types.test.d.ts.map +0 -1
- package/dist/resolve-modules/plugins/types.test.js +0 -45
- package/dist/resolve-modules/resolveModules.d.ts +0 -3
- package/dist/resolve-modules/resolveModules.d.ts.map +0 -1
- package/dist/resolve-modules/resolveModules.js +0 -80
- package/dist/resolve-modules/resolveModules.test.d.ts +0 -2
- package/dist/resolve-modules/resolveModules.test.d.ts.map +0 -1
- package/dist/resolve-modules/resolveModules.test.js +0 -185
- package/dist/resolve-modules/types.d.ts +0 -63
- package/dist/resolve-modules/types.d.ts.map +0 -1
- package/dist/resolve-modules/types.js +0 -1
- package/dist/resolve-modules/validateModuleSettings.test.d.ts +0 -2
- package/dist/resolve-modules/validateModuleSettings.test.d.ts.map +0 -1
- package/dist/resolve-modules/validateModuleSettings.test.js +0 -71
- package/dist/resolve-modules/validatedModuleSettings.d.ts +0 -7
- package/dist/resolve-modules/validatedModuleSettings.d.ts.map +0 -1
- package/dist/resolve-modules/validatedModuleSettings.js +0 -11
- package/dist/storage/helper.d.ts +0 -11
- package/dist/storage/helper.d.ts.map +0 -1
- package/dist/storage/helper.js +0 -63
- package/dist/storage/helpers.test.d.ts +0 -2
- package/dist/storage/helpers.test.d.ts.map +0 -1
- package/dist/storage/helpers.test.js +0 -84
- package/dist/storage/human-id/human-readable-id.d.ts +0 -3
- package/dist/storage/human-id/human-readable-id.d.ts.map +0 -1
- package/dist/storage/human-id/human-readable-id.js +0 -20
- package/dist/storage/human-id/words.d.ts.map +0 -1
- package/dist/storage/human-id/words.test.d.ts.map +0 -1
- package/dist/telemetry/capture.d.ts.map +0 -1
- package/dist/telemetry/capture.js +0 -39
- package/dist/telemetry/groupIdentify.d.ts +0 -13
- package/dist/telemetry/groupIdentify.d.ts.map +0 -1
- package/dist/telemetry/groupIdentify.js +0 -35
- package/dist/test-utilities/createMessage.d.ts +0 -18
- package/dist/test-utilities/createMessage.d.ts.map +0 -1
- package/dist/test-utilities/createMessage.js +0 -17
- package/dist/test-utilities/createMessage.test.d.ts +0 -2
- package/dist/test-utilities/createMessage.test.d.ts.map +0 -1
- package/dist/test-utilities/createMessage.test.js +0 -106
- package/dist/test-utilities/index.d.ts +0 -3
- package/dist/test-utilities/index.d.ts.map +0 -1
- package/dist/test-utilities/index.js +0 -2
- package/dist/test-utilities/sleep.d.ts +0 -4
- package/dist/test-utilities/sleep.d.ts.map +0 -1
- package/dist/test-utilities/sleep.js +0 -9
- package/dist/v2/helper.d.ts +0 -43
- package/dist/v2/helper.d.ts.map +0 -1
- package/dist/v2/helper.js +0 -75
- package/dist/v2/helper.test.d.ts +0 -2
- package/dist/v2/helper.test.d.ts.map +0 -1
- package/dist/v2/helper.test.js +0 -92
- package/dist/v2/index.d.ts +0 -4
- package/dist/v2/index.d.ts.map +0 -1
- package/dist/v2/index.js +0 -2
- package/dist/v2/mocks/index.d.ts +0 -3
- package/dist/v2/mocks/index.d.ts.map +0 -1
- package/dist/v2/mocks/index.js +0 -2
- package/dist/v2/mocks/multipleMatcher/bundle.d.ts +0 -3
- package/dist/v2/mocks/multipleMatcher/bundle.d.ts.map +0 -1
- package/dist/v2/mocks/multipleMatcher/bundle.js +0 -194
- package/dist/v2/mocks/multipleMatcher/bundle.test.d.ts +0 -2
- package/dist/v2/mocks/multipleMatcher/bundle.test.d.ts.map +0 -1
- package/dist/v2/mocks/multipleMatcher/bundle.test.js +0 -10
- package/dist/v2/mocks/plural/bundle.d.ts +0 -3
- package/dist/v2/mocks/plural/bundle.d.ts.map +0 -1
- package/dist/v2/mocks/plural/bundle.js +0 -162
- package/dist/v2/mocks/plural/bundle.test.d.ts +0 -2
- package/dist/v2/mocks/plural/bundle.test.d.ts.map +0 -1
- package/dist/v2/mocks/plural/bundle.test.js +0 -15
- package/dist/v2/shim.d.ts +0 -12
- package/dist/v2/shim.d.ts.map +0 -1
- package/dist/v2/shim.js +0 -151
- package/dist/v2/shim.test.d.ts +0 -2
- package/dist/v2/shim.test.d.ts.map +0 -1
- package/dist/v2/shim.test.js +0 -49
- package/dist/v2/stubQueryApi.d.ts +0 -9
- package/dist/v2/stubQueryApi.d.ts.map +0 -1
- package/dist/v2/stubQueryApi.js +0 -38
- package/dist/v2/types.d.ts +0 -521
- package/dist/v2/types.d.ts.map +0 -1
- package/dist/v2/types.js +0 -78
- package/dist/validateProjectPath.d.ts +0 -17
- package/dist/validateProjectPath.d.ts.map +0 -1
- package/dist/validateProjectPath.js +0 -31
- package/dist/validateProjectPath.test.d.ts +0 -2
- package/dist/validateProjectPath.test.d.ts.map +0 -1
- package/dist/validateProjectPath.test.js +0 -40
- package/dist/versionedInterfaces.d.ts +0 -8
- package/dist/versionedInterfaces.d.ts.map +0 -1
- package/dist/versionedInterfaces.js +0 -8
- package/src/adapter/solidAdapter.test.ts +0 -472
- package/src/adapter/solidAdapter.ts +0 -79
- package/src/api.test-d.ts +0 -8
- package/src/api.ts +0 -116
- package/src/createMessageLintReportsQuery.ts +0 -225
- package/src/createMessagesQuery.test.ts +0 -538
- package/src/createMessagesQuery.ts +0 -635
- package/src/createNewProject.test.ts +0 -105
- package/src/createNewProject.ts +0 -46
- package/src/createNodeishFsWithAbsolutePaths.test.ts +0 -55
- package/src/createNodeishFsWithAbsolutePaths.ts +0 -52
- package/src/createNodeishFsWithWatcher.test.ts +0 -50
- package/src/createNodeishFsWithWatcher.ts +0 -85
- package/src/defaultProjectSettings.ts +0 -26
- package/src/env-variables/.prettierignore +0 -1
- package/src/env-variables/createIndexFile.js +0 -28
- package/src/errors.ts +0 -84
- package/src/lint/index.ts +0 -2
- package/src/lint/message/errors.ts +0 -9
- package/src/lint/message/lintMessages.test.ts +0 -126
- package/src/lint/message/lintMessages.ts +0 -25
- package/src/lint/message/lintSingleMessage.test.ts +0 -191
- package/src/lint/message/lintSingleMessage.ts +0 -57
- package/src/listProjects.test.ts +0 -91
- package/src/listProjects.ts +0 -48
- package/src/loadProject.test.ts +0 -1173
- package/src/loadProject.ts +0 -460
- package/src/messages/errors.ts +0 -25
- package/src/messages/index.ts +0 -2
- package/src/messages/variant.test.ts +0 -511
- package/src/messages/variant.ts +0 -247
- package/src/migrations/maybeAddModuleCache.ts +0 -68
- package/src/migrations/maybeCreateFirstProjectId.test.ts +0 -31
- package/src/migrations/maybeCreateFirstProjectId.ts +0 -51
- package/src/migrations/migrateToDirectory.test.ts +0 -54
- package/src/migrations/migrateToDirectory.ts +0 -62
- package/src/parseConfig.ts +0 -35
- package/src/persistence/batchedIO.test.ts +0 -63
- package/src/persistence/batchedIO.ts +0 -64
- package/src/persistence/filelock/acquireFileLock.ts +0 -129
- package/src/persistence/filelock/releaseLock.ts +0 -29
- package/src/persistence/store.test.ts +0 -102
- package/src/persistence/store.ts +0 -119
- package/src/persistence/storeApi.ts +0 -19
- package/src/reactivity/map.ts +0 -135
- package/src/reactivity/solid.test.ts +0 -222
- package/src/reactivity/solid.ts +0 -42
- package/src/reactivity/trigger.ts +0 -46
- package/src/resolve-modules/cache.ts +0 -89
- package/src/resolve-modules/errors.ts +0 -69
- package/src/resolve-modules/import.test.ts +0 -62
- package/src/resolve-modules/import.ts +0 -133
- package/src/resolve-modules/index.ts +0 -2
- package/src/resolve-modules/message-lint-rules/errors.ts +0 -9
- package/src/resolve-modules/message-lint-rules/resolveMessageLintRules.ts +0 -27
- package/src/resolve-modules/plugins/errors.ts +0 -56
- package/src/resolve-modules/plugins/resolvePlugins.test.ts +0 -301
- package/src/resolve-modules/plugins/resolvePlugins.ts +0 -129
- package/src/resolve-modules/plugins/types.test.ts +0 -53
- package/src/resolve-modules/plugins/types.ts +0 -76
- package/src/resolve-modules/resolveModules.test.ts +0 -224
- package/src/resolve-modules/resolveModules.ts +0 -113
- package/src/resolve-modules/types.ts +0 -72
- package/src/resolve-modules/validateModuleSettings.test.ts +0 -85
- package/src/resolve-modules/validatedModuleSettings.ts +0 -19
- package/src/storage/helper.ts +0 -74
- package/src/storage/helpers.test.ts +0 -95
- package/src/storage/human-id/human-readable-id.ts +0 -27
- package/src/telemetry/capture.ts +0 -49
- package/src/telemetry/groupIdentify.ts +0 -41
- package/src/test-utilities/createMessage.test.ts +0 -118
- package/src/test-utilities/createMessage.ts +0 -21
- package/src/test-utilities/index.ts +0 -2
- package/src/test-utilities/sleep.ts +0 -11
- package/src/v2/helper.test.ts +0 -95
- package/src/v2/helper.ts +0 -98
- package/src/v2/index.ts +0 -3
- package/src/v2/mocks/index.ts +0 -2
- package/src/v2/mocks/multipleMatcher/bundle.test.ts +0 -11
- package/src/v2/mocks/multipleMatcher/bundle.ts +0 -196
- package/src/v2/mocks/plural/bundle.test.ts +0 -18
- package/src/v2/mocks/plural/bundle.ts +0 -164
- package/src/v2/shim.test.ts +0 -56
- package/src/v2/shim.ts +0 -173
- package/src/v2/stubQueryApi.ts +0 -43
- package/src/v2/types.ts +0 -159
- package/src/validateProjectPath.test.ts +0 -50
- package/src/validateProjectPath.ts +0 -38
- package/src/versionedInterfaces.ts +0 -9
- /package/dist/{storage/human-id → human-id}/words.d.ts +0 -0
- /package/dist/{storage/human-id → human-id}/words.test.d.ts +0 -0
- /package/dist/{loadProject.test.d.ts → project/loadProject.test.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Developer-first localization infrastructure that is built on
|
|
1
|
+
Developer-first localization infrastructure that is built on lix. Your lix is the single source of truth for localization for collaboration and automation.
|
|
2
2
|
|
|
3
3
|
<div>
|
|
4
4
|
<p align="center">
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Kysely } from "kysely";
|
|
2
|
+
import { type InlangDatabaseSchema } from "./schema.js";
|
|
3
|
+
import { type SqliteDatabase } from "sqlite-wasm-kysely";
|
|
4
|
+
export declare function initDb(args: {
|
|
5
|
+
sqlite: SqliteDatabase;
|
|
6
|
+
}): Kysely<InlangDatabaseSchema>;
|
|
7
|
+
//# sourceMappingURL=initDb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initDb.d.ts","sourceRoot":"/","sources":["database/initDb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,MAAM,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAe,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKxE,wBAAgB,MAAM,CAAC,IAAI,EAAE;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,gCAatD"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="23c4687f-1029-5845-9124-0f1a162c7e16")}catch(e){}}();
|
|
3
|
+
import { CamelCasePlugin, Kysely } from "kysely";
|
|
4
|
+
import { applySchema } from "./schema.js";
|
|
5
|
+
import { createDialect } from "sqlite-wasm-kysely";
|
|
6
|
+
import { v7 } from "uuid";
|
|
7
|
+
import { humanId } from "../human-id/human-id.js";
|
|
8
|
+
import { JsonbPlugin } from "./jsonbPlugin.js";
|
|
9
|
+
export function initDb(args) {
|
|
10
|
+
initDefaultValueFunctions({ sqlite: args.sqlite });
|
|
11
|
+
applySchema({ sqlite: args.sqlite });
|
|
12
|
+
const db = new Kysely({
|
|
13
|
+
dialect: createDialect({
|
|
14
|
+
database: args.sqlite,
|
|
15
|
+
}),
|
|
16
|
+
plugins: [
|
|
17
|
+
new CamelCasePlugin(),
|
|
18
|
+
new JsonbPlugin({ database: args.sqlite }),
|
|
19
|
+
],
|
|
20
|
+
});
|
|
21
|
+
return db;
|
|
22
|
+
}
|
|
23
|
+
function initDefaultValueFunctions(args) {
|
|
24
|
+
args.sqlite.createFunction({
|
|
25
|
+
name: "uuid_v7",
|
|
26
|
+
arity: 0,
|
|
27
|
+
xFunc: () => v7(),
|
|
28
|
+
});
|
|
29
|
+
args.sqlite.createFunction({
|
|
30
|
+
name: "human_id",
|
|
31
|
+
arity: 0,
|
|
32
|
+
xFunc: () => humanId(),
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=initDb.js.map
|
|
36
|
+
//# debugId=23c4687f-1029-5845-9124-0f1a162c7e16
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initDb.js","sources":["database/initDb.ts"],"sourceRoot":"/","sourcesContent":["import { CamelCasePlugin, Kysely } from \"kysely\";\nimport { applySchema, type InlangDatabaseSchema } from \"./schema.js\";\nimport { createDialect, type SqliteDatabase } from \"sqlite-wasm-kysely\";\nimport { v7 } from \"uuid\";\nimport { humanId } from \"../human-id/human-id.js\";\nimport { JsonbPlugin } from \"./jsonbPlugin.js\";\n\nexport function initDb(args: { sqlite: SqliteDatabase }) {\n\tinitDefaultValueFunctions({ sqlite: args.sqlite });\n\tapplySchema({ sqlite: args.sqlite });\n\tconst db = new Kysely<InlangDatabaseSchema>({\n\t\tdialect: createDialect({\n\t\t\tdatabase: args.sqlite,\n\t\t}),\n\t\tplugins: [\n\t\t\tnew CamelCasePlugin(),\n\t\t\tnew JsonbPlugin({ database: args.sqlite }),\n\t\t],\n\t});\n\treturn db;\n}\n\nfunction initDefaultValueFunctions(args: { sqlite: SqliteDatabase }) {\n\targs.sqlite.createFunction({\n\t\tname: \"uuid_v7\",\n\t\tarity: 0,\n\t\txFunc: () => v7(),\n\t});\n\targs.sqlite.createFunction({\n\t\tname: \"human_id\",\n\t\tarity: 0,\n\t\txFunc: () => humanId(),\n\t});\n}\n"],"names":[],"mappings":";;AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,WAAW,EAA6B,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,aAAa,EAAuB,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,UAAU,MAAM,CAAC,IAAgC;IACtD,yBAAyB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACnD,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACrC,MAAM,EAAE,GAAG,IAAI,MAAM,CAAuB;QAC3C,OAAO,EAAE,aAAa,CAAC;YACtB,QAAQ,EAAE,IAAI,CAAC,MAAM;SACrB,CAAC;QACF,OAAO,EAAE;YACR,IAAI,eAAe,EAAE;YACrB,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;SAC1C;KACD,CAAC,CAAC;IACH,OAAO,EAAE,CAAC;AACX,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAgC;IAClE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;QAC1B,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;KACjB,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;QAC1B,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE;KACtB,CAAC,CAAC;AACJ,CAAC","debug_id":"23c4687f-1029-5845-9124-0f1a162c7e16"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initDbAndSchema.test.d.ts","sourceRoot":"/","sources":["database/initDbAndSchema.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="59953b14-f794-5a3a-85a5-18f6d5b194c1")}catch(e){}}();
|
|
3
|
+
import { createInMemoryDatabase } from "sqlite-wasm-kysely";
|
|
4
|
+
import { test, expect } from "vitest";
|
|
5
|
+
import { initDb } from "./initDb.js";
|
|
6
|
+
import { isHumanId } from "../human-id/human-id.js";
|
|
7
|
+
import { validate as isUuid } from "uuid";
|
|
8
|
+
test("bundle default values", async () => {
|
|
9
|
+
const sqlite = await createInMemoryDatabase({
|
|
10
|
+
readOnly: false,
|
|
11
|
+
});
|
|
12
|
+
const db = initDb({ sqlite });
|
|
13
|
+
const bundle = await db
|
|
14
|
+
.insertInto("bundle")
|
|
15
|
+
.defaultValues()
|
|
16
|
+
.returningAll()
|
|
17
|
+
.executeTakeFirstOrThrow();
|
|
18
|
+
expect(isHumanId(bundle.id)).toBe(true);
|
|
19
|
+
expect(bundle.declarations).toStrictEqual([]);
|
|
20
|
+
});
|
|
21
|
+
test("message default values", async () => {
|
|
22
|
+
const sqlite = await createInMemoryDatabase({
|
|
23
|
+
readOnly: false,
|
|
24
|
+
});
|
|
25
|
+
const db = initDb({ sqlite });
|
|
26
|
+
const bundle = await db
|
|
27
|
+
.insertInto("bundle")
|
|
28
|
+
.defaultValues()
|
|
29
|
+
.returningAll()
|
|
30
|
+
.executeTakeFirstOrThrow();
|
|
31
|
+
const message = await db
|
|
32
|
+
.insertInto("message")
|
|
33
|
+
.values({
|
|
34
|
+
bundleId: bundle.id,
|
|
35
|
+
locale: "en",
|
|
36
|
+
})
|
|
37
|
+
.returningAll()
|
|
38
|
+
.executeTakeFirstOrThrow();
|
|
39
|
+
expect(isUuid(message.id)).toBe(true);
|
|
40
|
+
expect(message.selectors).toStrictEqual([]);
|
|
41
|
+
});
|
|
42
|
+
test("variant default values", async () => {
|
|
43
|
+
const sqlite = await createInMemoryDatabase({
|
|
44
|
+
readOnly: false,
|
|
45
|
+
});
|
|
46
|
+
const db = initDb({ sqlite });
|
|
47
|
+
const bundle = await db
|
|
48
|
+
.insertInto("bundle")
|
|
49
|
+
.defaultValues()
|
|
50
|
+
.returningAll()
|
|
51
|
+
.executeTakeFirstOrThrow();
|
|
52
|
+
const message = await db
|
|
53
|
+
.insertInto("message")
|
|
54
|
+
.values({
|
|
55
|
+
bundleId: bundle.id,
|
|
56
|
+
locale: "en",
|
|
57
|
+
})
|
|
58
|
+
.returningAll()
|
|
59
|
+
.executeTakeFirstOrThrow();
|
|
60
|
+
const variant = await db
|
|
61
|
+
.insertInto("variant")
|
|
62
|
+
.values({
|
|
63
|
+
messageId: message.id,
|
|
64
|
+
})
|
|
65
|
+
.returningAll()
|
|
66
|
+
.executeTakeFirstOrThrow();
|
|
67
|
+
expect(isUuid(variant.id)).toBe(true);
|
|
68
|
+
expect(variant.matches).toStrictEqual([]);
|
|
69
|
+
expect(variant.pattern).toStrictEqual([]);
|
|
70
|
+
});
|
|
71
|
+
test("it should handle json serialization and parsing for bundles", async () => {
|
|
72
|
+
const sqlite = await createInMemoryDatabase({
|
|
73
|
+
readOnly: false,
|
|
74
|
+
});
|
|
75
|
+
const db = initDb({ sqlite });
|
|
76
|
+
const bundle = await db
|
|
77
|
+
.insertInto("bundle")
|
|
78
|
+
.values({
|
|
79
|
+
declarations: [
|
|
80
|
+
{
|
|
81
|
+
type: "input-variable",
|
|
82
|
+
name: "mock",
|
|
83
|
+
},
|
|
84
|
+
],
|
|
85
|
+
})
|
|
86
|
+
.returningAll()
|
|
87
|
+
.executeTakeFirstOrThrow();
|
|
88
|
+
expect(bundle.declarations).toStrictEqual([
|
|
89
|
+
{
|
|
90
|
+
type: "input-variable",
|
|
91
|
+
name: "mock",
|
|
92
|
+
},
|
|
93
|
+
]);
|
|
94
|
+
});
|
|
95
|
+
// https://github.com/opral/inlang-sdk/issues/209
|
|
96
|
+
test.todo("it should enable foreign key constraints", async () => {
|
|
97
|
+
const sqlite = await createInMemoryDatabase({
|
|
98
|
+
readOnly: false,
|
|
99
|
+
});
|
|
100
|
+
const db = initDb({ sqlite });
|
|
101
|
+
expect(() => db
|
|
102
|
+
.insertInto("message")
|
|
103
|
+
.values({
|
|
104
|
+
bundleId: "non-existent",
|
|
105
|
+
locale: "en",
|
|
106
|
+
})
|
|
107
|
+
.execute()).rejects.toThrow();
|
|
108
|
+
});
|
|
109
|
+
//# sourceMappingURL=initDbAndSchema.test.js.map
|
|
110
|
+
//# debugId=59953b14-f794-5a3a-85a5-18f6d5b194c1
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initDbAndSchema.test.js","sources":["database/initDbAndSchema.test.ts"],"sourceRoot":"/","sourcesContent":["import { createInMemoryDatabase } from \"sqlite-wasm-kysely\";\nimport { test, expect } from \"vitest\";\nimport { initDb } from \"./initDb.js\";\nimport { isHumanId } from \"../human-id/human-id.js\";\nimport { validate as isUuid } from \"uuid\";\n\ntest(\"bundle default values\", async () => {\n\tconst sqlite = await createInMemoryDatabase({\n\t\treadOnly: false,\n\t});\n\tconst db = initDb({ sqlite });\n\n\tconst bundle = await db\n\t\t.insertInto(\"bundle\")\n\t\t.defaultValues()\n\t\t.returningAll()\n\t\t.executeTakeFirstOrThrow();\n\n\texpect(isHumanId(bundle.id)).toBe(true);\n\texpect(bundle.declarations).toStrictEqual([]);\n});\n\ntest(\"message default values\", async () => {\n\tconst sqlite = await createInMemoryDatabase({\n\t\treadOnly: false,\n\t});\n\tconst db = initDb({ sqlite });\n\n\tconst bundle = await db\n\t\t.insertInto(\"bundle\")\n\t\t.defaultValues()\n\t\t.returningAll()\n\t\t.executeTakeFirstOrThrow();\n\n\tconst message = await db\n\t\t.insertInto(\"message\")\n\t\t.values({\n\t\t\tbundleId: bundle.id,\n\t\t\tlocale: \"en\",\n\t\t})\n\t\t.returningAll()\n\t\t.executeTakeFirstOrThrow();\n\n\texpect(isUuid(message.id)).toBe(true);\n\texpect(message.selectors).toStrictEqual([]);\n});\n\ntest(\"variant default values\", async () => {\n\tconst sqlite = await createInMemoryDatabase({\n\t\treadOnly: false,\n\t});\n\tconst db = initDb({ sqlite });\n\n\tconst bundle = await db\n\t\t.insertInto(\"bundle\")\n\t\t.defaultValues()\n\t\t.returningAll()\n\t\t.executeTakeFirstOrThrow();\n\n\tconst message = await db\n\t\t.insertInto(\"message\")\n\t\t.values({\n\t\t\tbundleId: bundle.id,\n\t\t\tlocale: \"en\",\n\t\t})\n\t\t.returningAll()\n\t\t.executeTakeFirstOrThrow();\n\n\tconst variant = await db\n\t\t.insertInto(\"variant\")\n\t\t.values({\n\t\t\tmessageId: message.id,\n\t\t})\n\t\t.returningAll()\n\t\t.executeTakeFirstOrThrow();\n\n\texpect(isUuid(variant.id)).toBe(true);\n\texpect(variant.matches).toStrictEqual([]);\n\texpect(variant.pattern).toStrictEqual([]);\n});\n\ntest(\"it should handle json serialization and parsing for bundles\", async () => {\n\tconst sqlite = await createInMemoryDatabase({\n\t\treadOnly: false,\n\t});\n\tconst db = initDb({ sqlite });\n\n\tconst bundle = await db\n\t\t.insertInto(\"bundle\")\n\t\t.values({\n\t\t\tdeclarations: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"input-variable\",\n\t\t\t\t\tname: \"mock\",\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t\t.returningAll()\n\t\t.executeTakeFirstOrThrow();\n\n\texpect(bundle.declarations).toStrictEqual([\n\t\t{\n\t\t\ttype: \"input-variable\",\n\t\t\tname: \"mock\",\n\t\t},\n\t]);\n});\n\n// https://github.com/opral/inlang-sdk/issues/209\ntest.todo(\"it should enable foreign key constraints\", async () => {\n\tconst sqlite = await createInMemoryDatabase({\n\t\treadOnly: false,\n\t});\n\tconst db = initDb({ sqlite });\n\n\texpect(() =>\n\t\tdb\n\t\t\t.insertInto(\"message\")\n\t\t\t.values({\n\t\t\t\tbundleId: \"non-existent\",\n\t\t\t\tlocale: \"en\",\n\t\t\t})\n\t\t\t.execute()\n\t).rejects.toThrow();\n});\n"],"names":[],"mappings":"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","debug_id":"59953b14-f794-5a3a-85a5-18f6d5b194c1"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type KyselyPlugin, type PluginTransformQueryArgs, type PluginTransformResultArgs, type QueryResult, type RootOperationNode, type UnknownRow } from "kysely";
|
|
2
|
+
import type { SqliteDatabase } from "sqlite-wasm-kysely";
|
|
3
|
+
export declare class JsonbPlugin implements KyselyPlugin {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(args: {
|
|
6
|
+
database: SqliteDatabase;
|
|
7
|
+
});
|
|
8
|
+
/**
|
|
9
|
+
* For an outgoing query like insert or update, the JSON
|
|
10
|
+
* values are transformed into `jsonb` function calls when
|
|
11
|
+
* executed against the database.
|
|
12
|
+
*/
|
|
13
|
+
transformQuery(args: PluginTransformQueryArgs): RootOperationNode;
|
|
14
|
+
/**
|
|
15
|
+
* For incoming query results, the JSON binaries are parsed
|
|
16
|
+
* into JSON objects.
|
|
17
|
+
*/
|
|
18
|
+
transformResult(args: PluginTransformResultArgs): Promise<QueryResult<UnknownRow>>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=jsonbPlugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonbPlugin.d.ts","sourceRoot":"/","sources":["database/jsonbPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAON,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAEf,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,qBAAa,WAAY,YAAW,YAAY;;gBAKnC,IAAI,EAAE;QAAE,QAAQ,EAAE,cAAc,CAAA;KAAE;IAI9C;;;;OAIG;IACH,cAAc,CAAC,IAAI,EAAE,wBAAwB,GAAG,iBAAiB;IAWjE;;;OAGG;IACG,eAAe,CACpB,IAAI,EAAE,yBAAyB,GAC7B,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;CAwBnC"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="3327df74-20ec-59b9-aa9d-5070dada72f2")}catch(e){}}();
|
|
3
|
+
import { OperationNodeTransformer, sql, ValueListNode, ValueNode, ValuesNode, ParseJSONResultsPlugin, OnConflictNode, } from "kysely";
|
|
4
|
+
export class JsonbPlugin {
|
|
5
|
+
#serializeJsonTransformer = new SerializeJsonbTransformer();
|
|
6
|
+
#parseJsonPlugin = new ParseJSONResultsPlugin();
|
|
7
|
+
#database;
|
|
8
|
+
constructor(args) {
|
|
9
|
+
this.#database = args.database;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* For an outgoing query like insert or update, the JSON
|
|
13
|
+
* values are transformed into `jsonb` function calls when
|
|
14
|
+
* executed against the database.
|
|
15
|
+
*/
|
|
16
|
+
transformQuery(args) {
|
|
17
|
+
if (args.node.kind === "InsertQueryNode" ||
|
|
18
|
+
args.node.kind === "UpdateQueryNode") {
|
|
19
|
+
const result = this.#serializeJsonTransformer.transformNode(args.node);
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
22
|
+
return args.node;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* For incoming query results, the JSON binaries are parsed
|
|
26
|
+
* into JSON objects.
|
|
27
|
+
*/
|
|
28
|
+
async transformResult(args) {
|
|
29
|
+
for (const row of args.result.rows) {
|
|
30
|
+
for (const key in row) {
|
|
31
|
+
if (row[key] instanceof ArrayBuffer ||
|
|
32
|
+
// uint8array, etc
|
|
33
|
+
ArrayBuffer.isView(row[key])) {
|
|
34
|
+
try {
|
|
35
|
+
const res = this.#database.exec(`SELECT json(?)`, {
|
|
36
|
+
returnValue: "resultRows",
|
|
37
|
+
bind: [row[key]],
|
|
38
|
+
});
|
|
39
|
+
row[key] = JSON.parse(res[0]);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
// it's not a json binary
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// in case it's a regular (text) json, run it through kyseley's json parser
|
|
48
|
+
return this.#parseJsonPlugin.transformResult(args);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
class SerializeJsonbTransformer extends OperationNodeTransformer {
|
|
52
|
+
transformOnConflict(node) {
|
|
53
|
+
return super.transformOnConflict({
|
|
54
|
+
...node,
|
|
55
|
+
updates: node.updates?.map((updateItem) => {
|
|
56
|
+
if (updateItem.kind !== "ColumnUpdateNode") {
|
|
57
|
+
return updateItem;
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
kind: "ColumnUpdateNode",
|
|
61
|
+
column: updateItem.column,
|
|
62
|
+
// @ts-expect-error - we know that the value is a ValueNode
|
|
63
|
+
value: this.transformValue(updateItem.value),
|
|
64
|
+
};
|
|
65
|
+
}),
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
transformValue(node) {
|
|
69
|
+
const { value } = node;
|
|
70
|
+
const serializedValue = maybeSerializeJson(value);
|
|
71
|
+
if (value === serializedValue) {
|
|
72
|
+
return node;
|
|
73
|
+
}
|
|
74
|
+
// @ts-expect-error - we know that the node is a ValueNode
|
|
75
|
+
return sql `jsonb(${serializedValue})`.toOperationNode();
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Transforms the value list node by replacing all JSON objects with `jsonb` function calls.
|
|
79
|
+
*/
|
|
80
|
+
transformValueList(node) {
|
|
81
|
+
return super.transformValueList({
|
|
82
|
+
...node,
|
|
83
|
+
values: node.values.map((listNodeItem) => {
|
|
84
|
+
if (listNodeItem.kind !== "ValueNode") {
|
|
85
|
+
return listNodeItem;
|
|
86
|
+
}
|
|
87
|
+
// @ts-expect-error - we know that the node is a ValueNode
|
|
88
|
+
const { value } = listNodeItem;
|
|
89
|
+
const serializedValue = maybeSerializeJson(value);
|
|
90
|
+
if (value === serializedValue) {
|
|
91
|
+
return listNodeItem;
|
|
92
|
+
}
|
|
93
|
+
return sql `jsonb(${serializedValue})`.toOperationNode();
|
|
94
|
+
}),
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Why this function is needed or why this works remains a mystery.
|
|
99
|
+
*/
|
|
100
|
+
transformValues(node) {
|
|
101
|
+
return super.transformValues({
|
|
102
|
+
...node,
|
|
103
|
+
values: node.values.map((valueItemNode) => {
|
|
104
|
+
if (valueItemNode.kind !== "PrimitiveValueListNode") {
|
|
105
|
+
return valueItemNode;
|
|
106
|
+
}
|
|
107
|
+
// change valueItem to ValueListNode
|
|
108
|
+
return {
|
|
109
|
+
kind: "ValueListNode",
|
|
110
|
+
values: valueItemNode.values.map((value) => ({
|
|
111
|
+
kind: "ValueNode",
|
|
112
|
+
value,
|
|
113
|
+
})),
|
|
114
|
+
};
|
|
115
|
+
}),
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
function maybeSerializeJson(value) {
|
|
120
|
+
if (
|
|
121
|
+
// binary data
|
|
122
|
+
value instanceof ArrayBuffer ||
|
|
123
|
+
// uint8array, etc
|
|
124
|
+
ArrayBuffer.isView(value) ||
|
|
125
|
+
value === null ||
|
|
126
|
+
value === undefined) {
|
|
127
|
+
return value;
|
|
128
|
+
}
|
|
129
|
+
else if (typeof value === "object" || Array.isArray(value)) {
|
|
130
|
+
return JSON.stringify(value);
|
|
131
|
+
}
|
|
132
|
+
return value;
|
|
133
|
+
}
|
|
134
|
+
// The code here didn't work https://github.com/opral/inlang-sdk/issues/132#issuecomment-2339321910
|
|
135
|
+
// but would be the "right" solution to avoid heuristics which column might or might not be a json column
|
|
136
|
+
// // modifies the query in place for readability and performance
|
|
137
|
+
// function mapQuery(
|
|
138
|
+
// node: InsertQueryNode,
|
|
139
|
+
// jsonColumns: TableSchema
|
|
140
|
+
// ): InsertQueryNode {
|
|
141
|
+
// // if the query is not an insert query, we don't need to do anything
|
|
142
|
+
// if (node.into === undefined) {
|
|
143
|
+
// return node;
|
|
144
|
+
// }
|
|
145
|
+
// // if the table is not in the schema that has json columns, we don't need to do anything
|
|
146
|
+
// const columnsWithJson = jsonColumns[node.into.table.identifier.name];
|
|
147
|
+
// if (columnsWithJson === undefined) {
|
|
148
|
+
// return node;
|
|
149
|
+
// }
|
|
150
|
+
// // find the indexes of the values that need to be transformed
|
|
151
|
+
// // SQL query: INSERT INTO table (col1, col2) VALUES (val1, val2)
|
|
152
|
+
// const indexesThatNeedToBeTransformed: [number, string][] = [];
|
|
153
|
+
// for (const [i, col] of node.columns?.entries() ?? []) {
|
|
154
|
+
// const jsonType = columnsWithJson[col.column.name];
|
|
155
|
+
// if (jsonType !== undefined) {
|
|
156
|
+
// indexesThatNeedToBeTransformed.push([i, jsonType]);
|
|
157
|
+
// }
|
|
158
|
+
// }
|
|
159
|
+
// const values = structuredClone(node.values);
|
|
160
|
+
// for (const [i, jsonType] of indexesThatNeedToBeTransformed) {
|
|
161
|
+
// if (
|
|
162
|
+
// // top level values node that should contain a list of values
|
|
163
|
+
// node.values?.kind !== "ValuesNode" &&
|
|
164
|
+
// // the node we are interested in must be a value node
|
|
165
|
+
// // @ts-expect-error - we know that the node is a ValuesNode with values
|
|
166
|
+
// (node.values as ValuesNode).values?.[i].kind !== "ValueNode"
|
|
167
|
+
// ) {
|
|
168
|
+
// throw new Error("Unexpected node structure");
|
|
169
|
+
// }
|
|
170
|
+
// const serializedJson = JSON.stringify(node.values.values[0].values[i]);
|
|
171
|
+
// // @ts-expect-error - we know that the node is a ValuesNode with values
|
|
172
|
+
// values.values[0].values[i] =
|
|
173
|
+
// jsonType === "jsonb"
|
|
174
|
+
// ? sql`jsonb(${serializedJson})`.toOperationNode()
|
|
175
|
+
// : sql`json(${serializedJson})`.toOperationNode();
|
|
176
|
+
// }
|
|
177
|
+
// return {
|
|
178
|
+
// ...node,
|
|
179
|
+
// values,
|
|
180
|
+
// };
|
|
181
|
+
// }
|
|
182
|
+
//# sourceMappingURL=jsonbPlugin.js.map
|
|
183
|
+
//# debugId=3327df74-20ec-59b9-aa9d-5070dada72f2
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonbPlugin.js","sources":["database/jsonbPlugin.ts"],"sourceRoot":"/","sourcesContent":["import {\n\tOperationNodeTransformer,\n\tsql,\n\tValueListNode,\n\tValueNode,\n\tValuesNode,\n\tParseJSONResultsPlugin,\n\ttype KyselyPlugin,\n\ttype PluginTransformQueryArgs,\n\ttype PluginTransformResultArgs,\n\ttype QueryResult,\n\ttype RootOperationNode,\n\ttype UnknownRow,\n\tOnConflictNode,\n} from \"kysely\";\nimport type { SqliteDatabase } from \"sqlite-wasm-kysely\";\n\nexport class JsonbPlugin implements KyselyPlugin {\n\t#serializeJsonTransformer = new SerializeJsonbTransformer();\n\t#parseJsonPlugin = new ParseJSONResultsPlugin();\n\t#database: SqliteDatabase;\n\n\tconstructor(args: { database: SqliteDatabase }) {\n\t\tthis.#database = args.database;\n\t}\n\n\t/**\n\t * For an outgoing query like insert or update, the JSON\n\t * values are transformed into `jsonb` function calls when\n\t * executed against the database.\n\t */\n\ttransformQuery(args: PluginTransformQueryArgs): RootOperationNode {\n\t\tif (\n\t\t\targs.node.kind === \"InsertQueryNode\" ||\n\t\t\targs.node.kind === \"UpdateQueryNode\"\n\t\t) {\n\t\t\tconst result = this.#serializeJsonTransformer.transformNode(args.node);\n\t\t\treturn result;\n\t\t}\n\t\treturn args.node;\n\t}\n\n\t/**\n\t * For incoming query results, the JSON binaries are parsed\n\t * into JSON objects.\n\t */\n\tasync transformResult(\n\t\targs: PluginTransformResultArgs\n\t): Promise<QueryResult<UnknownRow>> {\n\t\tfor (const row of args.result.rows) {\n\t\t\tfor (const key in row) {\n\t\t\t\tif (\n\t\t\t\t\trow[key] instanceof ArrayBuffer ||\n\t\t\t\t\t// uint8array, etc\n\t\t\t\t\tArrayBuffer.isView(row[key])\n\t\t\t\t) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst res = this.#database.exec(`SELECT json(?)`, {\n\t\t\t\t\t\t\treturnValue: \"resultRows\",\n\t\t\t\t\t\t\tbind: [row[key] as any],\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\trow[key] = JSON.parse(res[0] as any);\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// it's not a json binary\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// in case it's a regular (text) json, run it through kyseley's json parser\n\t\treturn this.#parseJsonPlugin.transformResult(args);\n\t}\n}\n\nclass SerializeJsonbTransformer extends OperationNodeTransformer {\n\tprotected override transformOnConflict(node: OnConflictNode): OnConflictNode {\n\t\treturn super.transformOnConflict({\n\t\t\t...node,\n\t\t\tupdates: node.updates?.map((updateItem) => {\n\t\t\t\tif (updateItem.kind !== \"ColumnUpdateNode\") {\n\t\t\t\t\treturn updateItem;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tkind: \"ColumnUpdateNode\",\n\t\t\t\t\tcolumn: updateItem.column,\n\t\t\t\t\t// @ts-expect-error - we know that the value is a ValueNode\n\t\t\t\t\tvalue: this.transformValue(updateItem.value),\n\t\t\t\t};\n\t\t\t}),\n\t\t});\n\t}\n\n\tprotected override transformValue(node: ValueNode): ValueNode {\n\t\tconst { value } = node;\n\t\tconst serializedValue = maybeSerializeJson(value);\n\t\tif (value === serializedValue) {\n\t\t\treturn node;\n\t\t}\n\t\t// @ts-expect-error - we know that the node is a ValueNode\n\t\treturn sql`jsonb(${serializedValue})`.toOperationNode();\n\t}\n\t/**\n\t * Transforms the value list node by replacing all JSON objects with `jsonb` function calls.\n\t */\n\tprotected override transformValueList(node: ValueListNode): ValueListNode {\n\t\treturn super.transformValueList({\n\t\t\t...node,\n\t\t\tvalues: node.values.map((listNodeItem) => {\n\t\t\t\tif (listNodeItem.kind !== \"ValueNode\") {\n\t\t\t\t\treturn listNodeItem;\n\t\t\t\t}\n\t\t\t\t// @ts-expect-error - we know that the node is a ValueNode\n\t\t\t\tconst { value } = listNodeItem;\n\t\t\t\tconst serializedValue = maybeSerializeJson(value);\n\n\t\t\t\tif (value === serializedValue) {\n\t\t\t\t\treturn listNodeItem;\n\t\t\t\t}\n\t\t\t\treturn sql`jsonb(${serializedValue})`.toOperationNode();\n\t\t\t}),\n\t\t});\n\t}\n\n\t/**\n\t * Why this function is needed or why this works remains a mystery.\n\t */\n\toverride transformValues(node: ValuesNode): ValuesNode {\n\t\treturn super.transformValues({\n\t\t\t...node,\n\t\t\tvalues: node.values.map((valueItemNode) => {\n\t\t\t\tif (valueItemNode.kind !== \"PrimitiveValueListNode\") {\n\t\t\t\t\treturn valueItemNode;\n\t\t\t\t}\n\n\t\t\t\t// change valueItem to ValueListNode\n\t\t\t\treturn {\n\t\t\t\t\tkind: \"ValueListNode\",\n\t\t\t\t\tvalues: valueItemNode.values.map(\n\t\t\t\t\t\t(value) =>\n\t\t\t\t\t\t\t({\n\t\t\t\t\t\t\t\tkind: \"ValueNode\",\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t}) as ValueNode\n\t\t\t\t\t),\n\t\t\t\t} as ValueListNode;\n\t\t\t}),\n\t\t});\n\t}\n}\n\nfunction maybeSerializeJson(value: any): any {\n\tif (\n\t\t// binary data\n\t\tvalue instanceof ArrayBuffer ||\n\t\t// uint8array, etc\n\t\tArrayBuffer.isView(value) ||\n\t\tvalue === null ||\n\t\tvalue === undefined\n\t) {\n\t\treturn value;\n\t} else if (typeof value === \"object\" || Array.isArray(value)) {\n\t\treturn JSON.stringify(value);\n\t}\n\treturn value;\n}\n\n// The code here didn't work https://github.com/opral/inlang-sdk/issues/132#issuecomment-2339321910\n// but would be the \"right\" solution to avoid heuristics which column might or might not be a json column\n// // modifies the query in place for readability and performance\n// function mapQuery(\n// \tnode: InsertQueryNode,\n// \tjsonColumns: TableSchema\n// ): InsertQueryNode {\n// \t// if the query is not an insert query, we don't need to do anything\n// \tif (node.into === undefined) {\n// \t\treturn node;\n// \t}\n// \t// if the table is not in the schema that has json columns, we don't need to do anything\n// \tconst columnsWithJson = jsonColumns[node.into.table.identifier.name];\n// \tif (columnsWithJson === undefined) {\n// \t\treturn node;\n// \t}\n// \t// find the indexes of the values that need to be transformed\n// \t// SQL query: INSERT INTO table (col1, col2) VALUES (val1, val2)\n// \tconst indexesThatNeedToBeTransformed: [number, string][] = [];\n// \tfor (const [i, col] of node.columns?.entries() ?? []) {\n// \t\tconst jsonType = columnsWithJson[col.column.name];\n// \t\tif (jsonType !== undefined) {\n// \t\t\tindexesThatNeedToBeTransformed.push([i, jsonType]);\n// \t\t}\n// \t}\n// \tconst values = structuredClone(node.values);\n// \tfor (const [i, jsonType] of indexesThatNeedToBeTransformed) {\n// \t\tif (\n// \t\t\t// top level values node that should contain a list of values\n// \t\t\tnode.values?.kind !== \"ValuesNode\" &&\n// \t\t\t// the node we are interested in must be a value node\n// \t\t\t// @ts-expect-error - we know that the node is a ValuesNode with values\n// \t\t\t(node.values as ValuesNode).values?.[i].kind !== \"ValueNode\"\n// \t\t) {\n// \t\t\tthrow new Error(\"Unexpected node structure\");\n// \t\t}\n// \t\tconst serializedJson = JSON.stringify(node.values.values[0].values[i]);\n// \t\t// @ts-expect-error - we know that the node is a ValuesNode with values\n// \t\tvalues.values[0].values[i] =\n// \t\t\tjsonType === \"jsonb\"\n// \t\t\t\t? sql`jsonb(${serializedJson})`.toOperationNode()\n// \t\t\t\t: sql`json(${serializedJson})`.toOperationNode();\n// \t}\n\n// \treturn {\n// \t\t...node,\n// \t\tvalues,\n// \t};\n// }\n"],"names":[],"mappings":"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","debug_id":"3327df74-20ec-59b9-aa9d-5070dada72f2"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonbPlugin.test.d.ts","sourceRoot":"/","sources":["database/jsonbPlugin.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="a9bcdcfb-24b6-567b-83ae-3848149139a8")}catch(e){}}();
|
|
3
|
+
import { Kysely } from "kysely";
|
|
4
|
+
import { createDialect, createInMemoryDatabase } from "sqlite-wasm-kysely";
|
|
5
|
+
import { test, expect } from "vitest";
|
|
6
|
+
import { JsonbPlugin } from "./jsonbPlugin.js";
|
|
7
|
+
test("parsing and serializing of jsonb should work", async () => {
|
|
8
|
+
const database = await createInMemoryDatabase({
|
|
9
|
+
readOnly: false,
|
|
10
|
+
});
|
|
11
|
+
database.exec(`
|
|
12
|
+
CREATE TABLE foo (
|
|
13
|
+
id TEXT PRIMARY KEY,
|
|
14
|
+
data BLOB NOT NULL
|
|
15
|
+
) strict;
|
|
16
|
+
`);
|
|
17
|
+
const db = new Kysely({
|
|
18
|
+
dialect: createDialect({
|
|
19
|
+
database,
|
|
20
|
+
}),
|
|
21
|
+
plugins: [new JsonbPlugin({ database })],
|
|
22
|
+
});
|
|
23
|
+
const foo = await db
|
|
24
|
+
.insertInto("foo")
|
|
25
|
+
.values({
|
|
26
|
+
id: "mock",
|
|
27
|
+
data: {
|
|
28
|
+
data: "baz",
|
|
29
|
+
},
|
|
30
|
+
})
|
|
31
|
+
.returningAll()
|
|
32
|
+
.executeTakeFirstOrThrow();
|
|
33
|
+
expect(foo).toEqual({
|
|
34
|
+
id: "mock",
|
|
35
|
+
data: {
|
|
36
|
+
data: "baz",
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
test("upserts should be handled", async () => {
|
|
41
|
+
const database = await createInMemoryDatabase({
|
|
42
|
+
readOnly: false,
|
|
43
|
+
});
|
|
44
|
+
database.exec(`
|
|
45
|
+
CREATE TABLE foo (
|
|
46
|
+
id TEXT PRIMARY KEY,
|
|
47
|
+
data BLOB NOT NULL
|
|
48
|
+
) strict;
|
|
49
|
+
`);
|
|
50
|
+
const db = new Kysely({
|
|
51
|
+
dialect: createDialect({
|
|
52
|
+
database,
|
|
53
|
+
}),
|
|
54
|
+
plugins: [
|
|
55
|
+
new JsonbPlugin({
|
|
56
|
+
database,
|
|
57
|
+
}),
|
|
58
|
+
],
|
|
59
|
+
});
|
|
60
|
+
const foo = await db
|
|
61
|
+
.insertInto("foo")
|
|
62
|
+
.values({
|
|
63
|
+
id: "mock",
|
|
64
|
+
data: {
|
|
65
|
+
bar: "baz",
|
|
66
|
+
},
|
|
67
|
+
})
|
|
68
|
+
.returningAll()
|
|
69
|
+
.executeTakeFirstOrThrow();
|
|
70
|
+
expect(foo).toEqual({
|
|
71
|
+
id: "mock",
|
|
72
|
+
data: {
|
|
73
|
+
bar: "baz",
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
const updatedFoo = {
|
|
77
|
+
id: "mock",
|
|
78
|
+
data: {
|
|
79
|
+
bar: "baz",
|
|
80
|
+
baz: "qux",
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
const updatedFooResult = await db
|
|
84
|
+
.insertInto("foo")
|
|
85
|
+
.values(updatedFoo)
|
|
86
|
+
.returningAll()
|
|
87
|
+
.onConflict((oc) => oc.column("id").doUpdateSet(updatedFoo))
|
|
88
|
+
.executeTakeFirstOrThrow();
|
|
89
|
+
expect(updatedFooResult).toEqual(updatedFoo);
|
|
90
|
+
});
|
|
91
|
+
test("storing json as text is supposed to fail to avoid heuristics if the json should be stored as blob or text", async () => {
|
|
92
|
+
const database = await createInMemoryDatabase({
|
|
93
|
+
readOnly: false,
|
|
94
|
+
});
|
|
95
|
+
database.exec(`
|
|
96
|
+
CREATE TABLE foo (
|
|
97
|
+
id TEXT PRIMARY KEY,
|
|
98
|
+
data TEXT NOT NULL
|
|
99
|
+
) strict;
|
|
100
|
+
`);
|
|
101
|
+
const db = new Kysely({
|
|
102
|
+
dialect: createDialect({
|
|
103
|
+
database,
|
|
104
|
+
}),
|
|
105
|
+
plugins: [new JsonbPlugin({ database })],
|
|
106
|
+
});
|
|
107
|
+
expect(() => db
|
|
108
|
+
.insertInto("foo")
|
|
109
|
+
.values({
|
|
110
|
+
id: "mock",
|
|
111
|
+
data: {
|
|
112
|
+
bar: "baz",
|
|
113
|
+
},
|
|
114
|
+
})
|
|
115
|
+
.returningAll()
|
|
116
|
+
.executeTakeFirstOrThrow()).rejects.toThrowErrorMatchingInlineSnapshot(`[SQLite3Error: SQLITE_CONSTRAINT_DATATYPE: sqlite3 result code 3091: cannot store BLOB value in TEXT column foo.data]`);
|
|
117
|
+
});
|
|
118
|
+
//# sourceMappingURL=jsonbPlugin.test.js.map
|
|
119
|
+
//# debugId=a9bcdcfb-24b6-567b-83ae-3848149139a8
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonbPlugin.test.js","sources":["database/jsonbPlugin.test.ts"],"sourceRoot":"/","sourcesContent":["import { Kysely } from \"kysely\";\nimport { createDialect, createInMemoryDatabase } from \"sqlite-wasm-kysely\";\nimport { test, expect } from \"vitest\";\nimport { JsonbPlugin } from \"./jsonbPlugin.js\";\n\ntest(\"parsing and serializing of jsonb should work\", async () => {\n\ttype MockSchema = {\n\t\tfoo: {\n\t\t\tid: string;\n\t\t\tdata: Record<string, any>;\n\t\t};\n\t};\n\tconst database = await createInMemoryDatabase({\n\t\treadOnly: false,\n\t});\n\n\tdatabase.exec(`\n CREATE TABLE foo (\n id TEXT PRIMARY KEY,\n data BLOB NOT NULL\n ) strict; \n `);\n\n\tconst db = new Kysely<MockSchema>({\n\t\tdialect: createDialect({\n\t\t\tdatabase,\n\t\t}),\n\t\tplugins: [new JsonbPlugin({ database })],\n\t});\n\n\tconst foo = await db\n\t\t.insertInto(\"foo\")\n\t\t.values({\n\t\t\tid: \"mock\",\n\t\t\tdata: {\n\t\t\t\tdata: \"baz\",\n\t\t\t},\n\t\t})\n\t\t.returningAll()\n\t\t.executeTakeFirstOrThrow();\n\n\texpect(foo).toEqual({\n\t\tid: \"mock\",\n\t\tdata: {\n\t\t\tdata: \"baz\",\n\t\t},\n\t});\n});\n\ntest(\"upserts should be handled\", async () => {\n\ttype MockSchema = {\n\t\tfoo: {\n\t\t\tid: string;\n\t\t\tdata: Record<string, any>;\n\t\t};\n\t};\n\tconst database = await createInMemoryDatabase({\n\t\treadOnly: false,\n\t});\n\n\tdatabase.exec(`\n CREATE TABLE foo (\n id TEXT PRIMARY KEY,\n data BLOB NOT NULL\n ) strict; \n `);\n\n\tconst db = new Kysely<MockSchema>({\n\t\tdialect: createDialect({\n\t\t\tdatabase,\n\t\t}),\n\t\tplugins: [\n\t\t\tnew JsonbPlugin({\n\t\t\t\tdatabase,\n\t\t\t}),\n\t\t],\n\t});\n\n\tconst foo = await db\n\t\t.insertInto(\"foo\")\n\t\t.values({\n\t\t\tid: \"mock\",\n\t\t\tdata: {\n\t\t\t\tbar: \"baz\",\n\t\t\t},\n\t\t})\n\t\t.returningAll()\n\t\t.executeTakeFirstOrThrow();\n\n\texpect(foo).toEqual({\n\t\tid: \"mock\",\n\t\tdata: {\n\t\t\tbar: \"baz\",\n\t\t},\n\t});\n\n\tconst updatedFoo = {\n\t\tid: \"mock\",\n\t\tdata: {\n\t\t\tbar: \"baz\",\n\t\t\tbaz: \"qux\",\n\t\t},\n\t};\n\n\tconst updatedFooResult = await db\n\t\t.insertInto(\"foo\")\n\t\t.values(updatedFoo)\n\t\t.returningAll()\n\t\t.onConflict((oc) => oc.column(\"id\").doUpdateSet(updatedFoo))\n\t\t.executeTakeFirstOrThrow();\n\n\texpect(updatedFooResult).toEqual(updatedFoo);\n});\n\ntest(\"storing json as text is supposed to fail to avoid heuristics if the json should be stored as blob or text\", async () => {\n\ttype MockSchema = {\n\t\tfoo: {\n\t\t\tid: string;\n\t\t\tdata: Record<string, any>;\n\t\t};\n\t};\n\tconst database = await createInMemoryDatabase({\n\t\treadOnly: false,\n\t});\n\n\tdatabase.exec(`\n CREATE TABLE foo (\n id TEXT PRIMARY KEY,\n data TEXT NOT NULL\n ) strict; \n `);\n\n\tconst db = new Kysely<MockSchema>({\n\t\tdialect: createDialect({\n\t\t\tdatabase,\n\t\t}),\n\t\tplugins: [new JsonbPlugin({ database })],\n\t});\n\n\texpect(() =>\n\t\tdb\n\t\t\t.insertInto(\"foo\")\n\t\t\t.values({\n\t\t\t\tid: \"mock\",\n\t\t\t\tdata: {\n\t\t\t\t\tbar: \"baz\",\n\t\t\t\t},\n\t\t\t})\n\t\t\t.returningAll()\n\t\t\t.executeTakeFirstOrThrow()\n\t).rejects.toThrowErrorMatchingInlineSnapshot(\n\t\t`[SQLite3Error: SQLITE_CONSTRAINT_DATATYPE: sqlite3 result code 3091: cannot store BLOB value in TEXT column foo.data]`\n\t);\n});\n"],"names":[],"mappings":";;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,IAAI,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;IAO/D,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC;QAC7C,QAAQ,EAAE,KAAK;KACf,CAAC,CAAC;IAEH,QAAQ,CAAC,IAAI,CAAC;;;;;GAKZ,CAAC,CAAC;IAEJ,MAAM,EAAE,GAAG,IAAI,MAAM,CAAa;QACjC,OAAO,EAAE,aAAa,CAAC;YACtB,QAAQ;SACR,CAAC;QACF,OAAO,EAAE,CAAC,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KACxC,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,MAAM,EAAE;SAClB,UAAU,CAAC,KAAK,CAAC;SACjB,MAAM,CAAC;QACP,EAAE,EAAE,MAAM;QACV,IAAI,EAAE;YACL,IAAI,EAAE,KAAK;SACX;KACD,CAAC;SACD,YAAY,EAAE;SACd,uBAAuB,EAAE,CAAC;IAE5B,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;QACnB,EAAE,EAAE,MAAM;QACV,IAAI,EAAE;YACL,IAAI,EAAE,KAAK;SACX;KACD,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;IAO5C,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC;QAC7C,QAAQ,EAAE,KAAK;KACf,CAAC,CAAC;IAEH,QAAQ,CAAC,IAAI,CAAC;;;;;GAKZ,CAAC,CAAC;IAEJ,MAAM,EAAE,GAAG,IAAI,MAAM,CAAa;QACjC,OAAO,EAAE,aAAa,CAAC;YACtB,QAAQ;SACR,CAAC;QACF,OAAO,EAAE;YACR,IAAI,WAAW,CAAC;gBACf,QAAQ;aACR,CAAC;SACF;KACD,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,MAAM,EAAE;SAClB,UAAU,CAAC,KAAK,CAAC;SACjB,MAAM,CAAC;QACP,EAAE,EAAE,MAAM;QACV,IAAI,EAAE;YACL,GAAG,EAAE,KAAK;SACV;KACD,CAAC;SACD,YAAY,EAAE;SACd,uBAAuB,EAAE,CAAC;IAE5B,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;QACnB,EAAE,EAAE,MAAM;QACV,IAAI,EAAE;YACL,GAAG,EAAE,KAAK;SACV;KACD,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG;QAClB,EAAE,EAAE,MAAM;QACV,IAAI,EAAE;YACL,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;SACV;KACD,CAAC;IAEF,MAAM,gBAAgB,GAAG,MAAM,EAAE;SAC/B,UAAU,CAAC,KAAK,CAAC;SACjB,MAAM,CAAC,UAAU,CAAC;SAClB,YAAY,EAAE;SACd,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;SAC3D,uBAAuB,EAAE,CAAC;IAE5B,MAAM,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2GAA2G,EAAE,KAAK,IAAI,EAAE;IAO5H,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC;QAC7C,QAAQ,EAAE,KAAK;KACf,CAAC,CAAC;IAEH,QAAQ,CAAC,IAAI,CAAC;;;;;GAKZ,CAAC,CAAC;IAEJ,MAAM,EAAE,GAAG,IAAI,MAAM,CAAa;QACjC,OAAO,EAAE,aAAa,CAAC;YACtB,QAAQ;SACR,CAAC;QACF,OAAO,EAAE,CAAC,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KACxC,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,EAAE,CACX,EAAE;SACA,UAAU,CAAC,KAAK,CAAC;SACjB,MAAM,CAAC;QACP,EAAE,EAAE,MAAM;QACV,IAAI,EAAE;YACL,GAAG,EAAE,KAAK;SACV;KACD,CAAC;SACD,YAAY,EAAE;SACd,uBAAuB,EAAE,CAC3B,CAAC,OAAO,CAAC,kCAAkC,CAC3C,uHAAuH,CACvH,CAAC;AACH,CAAC,CAAC,CAAC","debug_id":"a9bcdcfb-24b6-567b-83ae-3848149139a8"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { Generated, Insertable, Selectable, Updateable } from "kysely";
|
|
2
|
+
import type { SqliteDatabase } from "sqlite-wasm-kysely";
|
|
3
|
+
import { Declaration, Pattern, VariableReference } from "../json-schema/pattern.js";
|
|
4
|
+
export declare function applySchema(args: {
|
|
5
|
+
sqlite: SqliteDatabase;
|
|
6
|
+
}): void;
|
|
7
|
+
export type InlangDatabaseSchema = {
|
|
8
|
+
bundle: BundleTable;
|
|
9
|
+
message: MessageTable;
|
|
10
|
+
variant: VariantTable;
|
|
11
|
+
};
|
|
12
|
+
type BundleTable = {
|
|
13
|
+
id: Generated<string>;
|
|
14
|
+
declarations: Generated<Array<Declaration>>;
|
|
15
|
+
};
|
|
16
|
+
type MessageTable = {
|
|
17
|
+
id: Generated<string>;
|
|
18
|
+
bundleId: string;
|
|
19
|
+
locale: string;
|
|
20
|
+
selectors: Generated<Array<VariableReference>>;
|
|
21
|
+
};
|
|
22
|
+
type VariantTable = {
|
|
23
|
+
id: Generated<string>;
|
|
24
|
+
messageId: string;
|
|
25
|
+
matches: Generated<Array<Match>>;
|
|
26
|
+
pattern: Generated<Pattern>;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* A match is a variable reference that is either a literal or a catch-all.
|
|
30
|
+
*
|
|
31
|
+
* https://github.com/opral/inlang-sdk/issues/205
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* match = { type: "match", name: "gender", value: { type: "literal", value: "male" }}
|
|
35
|
+
*/
|
|
36
|
+
export type Match = LiteralMatch | CatchAllMatch;
|
|
37
|
+
export type LiteralMatch = {
|
|
38
|
+
type: "literal-match";
|
|
39
|
+
key: VariableReference["name"];
|
|
40
|
+
value: string;
|
|
41
|
+
};
|
|
42
|
+
export type CatchAllMatch = {
|
|
43
|
+
type: "catchall-match";
|
|
44
|
+
key: VariableReference["name"];
|
|
45
|
+
};
|
|
46
|
+
export type Bundle = Selectable<BundleTable>;
|
|
47
|
+
export type NewBundle = Insertable<BundleTable>;
|
|
48
|
+
export type BundleUpdate = Updateable<BundleTable>;
|
|
49
|
+
export type Message = Selectable<MessageTable>;
|
|
50
|
+
export type NewMessage = Insertable<MessageTable>;
|
|
51
|
+
export type MessageUpdate = Updateable<MessageTable>;
|
|
52
|
+
export type Variant = Selectable<VariantTable>;
|
|
53
|
+
export type NewVariant = Insertable<VariantTable>;
|
|
54
|
+
export type VariantUpdate = Updateable<VariantTable>;
|
|
55
|
+
export type MessageNested = Message & {
|
|
56
|
+
variants: Variant[];
|
|
57
|
+
};
|
|
58
|
+
export type NewMessageNested = NewMessage & {
|
|
59
|
+
variants: NewVariant[];
|
|
60
|
+
};
|
|
61
|
+
export type MessageNestedUpdate = Updateable<MessageTable> & {
|
|
62
|
+
variants: VariantUpdate[];
|
|
63
|
+
};
|
|
64
|
+
export type BundleNested = Bundle & {
|
|
65
|
+
messages: MessageNested[];
|
|
66
|
+
};
|
|
67
|
+
export type NewBundleNested = NewBundle & {
|
|
68
|
+
messages: NewMessageNested[];
|
|
69
|
+
};
|
|
70
|
+
export type BundleNestedUpdate = BundleUpdate & {
|
|
71
|
+
messages: MessageNestedUpdate[];
|
|
72
|
+
};
|
|
73
|
+
export {};
|
|
74
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"/","sources":["database/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EACN,WAAW,EACX,OAAO,EACP,iBAAiB,EACjB,MAAM,2BAA2B,CAAC;AAEnC,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,QAyC3D;AAED,MAAM,MAAM,oBAAoB,GAAG;IAClC,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF,KAAK,WAAW,GAAG;IAClB,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACtB,YAAY,EAAE,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;CAC5C,CAAC;AAEF,KAAK,YAAY,GAAG;IACnB,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;CAC/C,CAAC;AAEF,KAAK,YAAY,GAAG;IACnB,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACjC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;CAC5B,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,KAAK,GAAG,YAAY,GAAG,aAAa,CAAC;AAEjD,MAAM,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,GAAG,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;CACd,CAAC;AACF,MAAM,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB,GAAG,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;AAC7C,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;AAChD,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;AAEnD,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;AAC/C,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;AAClD,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;AAErD,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;AAC/C,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;AAClD,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;AAErD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG;IACrC,QAAQ,EAAE,OAAO,EAAE,CAAC;CACpB,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG;IAC3C,QAAQ,EAAE,UAAU,EAAE,CAAC;CACvB,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG;IAC5D,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG;IACnC,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC1B,CAAC;AACF,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG;IACzC,QAAQ,EAAE,gBAAgB,EAAE,CAAC;CAC7B,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG;IAC/C,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CAChC,CAAC"}
|